我正在尝试将我已经拥有的日期显示为新格式,我正在使用SimpleDateFormat
。
Android代码
String date = "2013-08-11 20:38 EDT";
SimpleDateFormat sf = new SimpleDateFormat("dd MMMM yyyy hh:mm a");
try {
newDate = sf.format(new SimpleDateFormat("yyyy-MM-dd kk:mm z").parse(date));
} catch (ParseException e) {
e.printStackTrace();
}
显示: 2013年8月11日08:38
但是如果我在JAVA
中运行相同的代码(作为普通的JAVA控制台应用程序)
JAVA
String date = "2013-08-11 20:38 EDT";
SimpleDateFormat sf = new SimpleDateFormat("dd MMMM yyyy hh:mm a");
String lDate = sf.format(new SimpleDateFormat("yyyy-MM-dd kk:mm z").parse(date));
System.out.println(lDate);
显示: 2013年8月12日上午06:08
这是我需要显示的格式。
P.S。:我在android中发出警告说
要获取本地格式,请使用getDateInstance(),getDateTimeInstance()或getTimeInstance(),或使用新的SimpleDateFormat(String模板,Locale语言环境),例如Locale.US用于ASCII日期。
所以我尝试将Locale.US
添加到SimpleDateFormat
它再次显示 2013年8月11日08:38 而不是 2013年8月12日上午06:08
我的问题是: 如何在Android中显示日期为2013年8月12日上午06:08。
答案 0 :(得分:2)
您当地的时间IST是UTC + 05:30,您的Android时间EDT是UTC-04:00。它们共同增加了9h30min的差异,解释了输出的差异。
将您的Android设备设置为IST时区以获得相同的输出。
或者,您可以在setTimeZone()
上致电DateFormat
以明确设置要使用的时区。
明确打印时区信息以使日期时间标记不那么模糊也很有帮助。
答案 1 :(得分:0)
new SimpleDateFormat("MM/dd/yyyy HH:mm:ss.S", Locale.US)
您应指定时区
答案 2 :(得分:0)
试试这段代码
SimpleDateFormat simple = new SimpleDateFormat("dd MMMM yyyy hh:mm a" , java.util.Locale.getDefault());