Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android中的日期格式化_Android_Date_Date Format_Simpledateformat - Fatal编程技术网

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()
,作为第二个参数。这就解决了问题。