为什么日期对象的字符串格式在不同区域的不同设备上有所不同?
问题描述:
所以,我在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
这究竟是为什么?两个位置的日期字符串的长度应该相同。
答
您可以设置任何格式的显示日期,你想要的。例如:
SimpleDateFormat ENGLISH_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd",
Locale.ENGLISH);
String datePrint = ENGLISH_DATE_FORMAT.format(messageTime);
timeTextView.setText(datePrint);
答
The documentatation of Date.toString()
说,它应该产生的形式dow mon dd hh:mm:ss zzz yyyy
。
zzz
是时区。它没有说明它使用的是哪个时区,并且对象在其中没有时区。常见的经验是它通常使用设备的默认时区。这甚至意味着您可以更改设备的时区设置,然后相同的对象将以不同的方式显示。这对许多人来说是一个惊喜。
根据文档遗漏秒,作为您的设备之一,似乎是不正确的。
由于不同的区域设置格式的日期不同。试试[日本](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)(例如), –
您是否尝试过搜索引擎?例如,您是否找到[All about java.util.Date](https://codeblog.jonskeet.uk/2017/04/23/all-about-java-util-date/)? –
有趣的是,一台设备将秒数留出,另一台显示它们。 –