android中的日期格式化
我试图用一种新的格式显示我已经拥有的日期,为此我使用了android中的日期格式化,android,date,date-format,simpledateformat,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)); } c
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日晚上8: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日上午6:08
这是我需要显示的格式
附言:我收到安卓系统的警告说
若要获取本地格式,请使用getDateInstance()、getDateTimeInstance()或getTimeInstance(),或者使用新的SimpleDataFormat(字符串模板、区域设置),例如将Locale.US用于ASCII日期
因此,我尝试将Locale.US
添加到SimpleDateFormat
中,它再次显示2013年8月11日晚上8:38而不是2013年8月12日上午6:08
我的问题是:
如何在android中显示日期为2013年8月12日06:08 AM。您的本地时间IST为UTC+05:30,您的android时间EDT为UTC-04:00。它们加在一起,增加了9小时30分的差异,解释了输出的差异 将Android设备设置为IST时区以获得相同的输出 或者,您可以在
DateFormat
上调用setTimeZone()
,显式设置要使用的时区
显式打印时区信息也有助于减少日期时间戳的歧义
new SimpleDateFormat("MM/dd/yyyy HH:mm:ss.S", Locale.US)
您应该指定时区,请尝试此代码
SimpleDateFormat simple = new SimpleDateFormat("dd MMMM yyyy hh:mm a" , java.util.Locale.getDefault());
那么,你的问题是什么?我希望我的日期在android代码中显示为2013年8月12日06:08 AM,而不是2013年8月11日08:38 PM。你是否陷入从下午到上午的更改?在日期格式化程序上明确设置时区。检查你的android仿真器时间和本地pc时间。谢谢。将Emulator时区设置为IST解决了这个问题。我还在
SimpleDataFormat
中添加了Locale.getDefault()
,作为第二个参数。这就解决了问题。