一个问题是您的原始日期字符串:
2013-08-02 11:00:00
不包括时区信息。因此,它被解释为 GMT 时间。这意味着,在加尔各答时间显示,它将是
Fri Aug 02 16:30:00 Asia/Calcutta 2013
您要指定11:00
已经在加尔各答时间。为此,请使用HttpDateParser 文档中定义的格式之一:
// we make sure to specify time zone information "+05:30"!
long timeSinceEpoch = HttpDateParser.parse("2013-08-02T11:00:00+05:30");
Date date = new Date(timeSinceEpoch);
System.out.println("Date: " + date);
// use this to slightly change the date formatting ... same time zone
String pattern = "yyyy-MM-dd hh:mma";
SimpleDateFormat formatter = new SimpleDateFormat(pattern);
String formattedDate = formatter.formatLocal(timeSinceEpoch);
System.out.println("SimpleDateFormat: " + formattedDate);
注意:除了添加"+5:30"
到时间字符串之外,您还必须将日期后的空格替换为'T'
.
此代码将输出:
[0.0] 日期:Fri Aug 02 11:00:00 Asia/Calcutta 2013
[0.0] 简单日期格式:2013-08-02 11:00am
如果设备的时区实际设置为加尔各答(加尔各答 +5.5)。
参考
在 Stack Overflow 上查看这个答案。
也许这个也是。