2017-06-23 113 views
0

所以,我在2個地點有2個設備。這就是我如何解析我從一個自定義的消息對象獲取時間:爲什麼日期對象的字符串格式在不同區域的不同設備上有所不同?

long mtime = message.getEpochTime(); 
Date messageTime = new Date(mtime * 1000); 
String dateString = messageTime.toString(); 
String datePrint = dateString.substring(0, dateString.length()-12); 
timeTextView.setText(datePrint); 

的日期和時間是在兩個位置正確(調整到本地時區)。但是,格式是不同的:

在一個手機格式爲Thu Jun 22 22:31,另一個顯示時間爲Fri Jun 23 08:31:52 GM

這究竟是爲什麼?兩個位置的日期字符串的長度應該相同。

+1

由於不同的區域設置格式的日期不同。試試[日本](https://stackoverflow.com/questions/20174225/convert-japans-date-format-2013%E5%B9%B411%E6%9C%8824%E6%97%A5-to-normal-date -format-2013-11-24)(例如), –

+0

您是否嘗試過搜索引擎?例如,您是否找到[All about java.util.Date](https://codeblog.jonskeet.uk/2017/04/23/all-about-java-util-date/)? –

+0

有趣的是,一臺設備將秒數留出,另一臺顯示它們。 –

回答

1

您可以設置任何格式的顯示日期,你想要的。例如:

SimpleDateFormat ENGLISH_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd", 
      Locale.ENGLISH); 
String datePrint = ENGLISH_DATE_FORMAT.format(messageTime); 
timeTextView.setText(datePrint); 
1

The documentatation of Date.toString()說,它應該產生的形式dow mon dd hh:mm:ss zzz yyyy

zzz是時區。它沒有說明它使用的是哪個時區,並且對象在其中沒有時區。常見的經驗是它通常使用設備的默認時區。這甚至意味着您可以更改設備的時區設置,然後相同的對象將以不同的方式顯示。這對許多人來說是一個驚喜。

根據文檔遺漏秒,作爲您的設備之一,似乎是不正確的。

相關問題