在android中格式化日期

时间:2014-03-06 09:06:26

标签: android date date-format simpledateformat

我正在尝试将我已经拥有的日期显示为新格式,我正在使用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。

3 个答案:

答案 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());