黑莓的时区问题



我正在处理一个项目,该项目要求我通过将日期值设置为特定时区来创建日期值。

我使用了以下代码

Date formatter1 = new Date(HttpDateParser.parse("2013-08-02 11:00:00"));
System.out.println("Date dd formatter1"+formatter1);

结果如下:

Fri Aug 02 16:30:00 Asia/Calcutta 2013

解析后,它会根据设备时区给我时间。。。如果设备时区设置为印度-加尔各答,则自动添加5:30。

我希望结果为:

Fri Aug 02 11:00:00 Asia/Calcutta 2013

我的意思是,它不应该添加偏移量作为GMT的参考。

我如何处理此代码以根据时区设置所需的数据,而不在内部更改它?

一个问题是您的原始日期字符串:

2013-08-02 11:00:00

是否包括时区信息。因此,它被解释为格林尼治标准时间。这意味着,在加尔各答时间显示,它将是

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'

此代码将输出:

[00]日期:2013年8月2日星期五11:00:00亚洲/加尔各答

[0.0]SimpleDateFormat:2013-08-02上午11:00

如果设备的时区实际上设置为加尔各答(加尔各答+5.5)。

参考文献

请看一下Stack Overflow上的答案
也许这个也是。

相关内容

  • 没有找到相关文章

最新更新