【问题标题】:Timezone issue in Blackberry黑莓中的时区问题
【发布时间】:2013-08-05 11:31:40
【问题描述】:

我正在开展一个项目,该项目需要我通过将 Date 值设置为特定时区来创建它。

我使用了以下代码

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 的参考。

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

【问题讨论】:

    标签: blackberry java-me timezone date-format timezone-offset


    【解决方案1】:

    一个问题是你原来的日期字符串:

    2013-08-02 11:00:00
    

    是否包含时区信息。因此,它被解释为 GMT 时间。这意味着,在加尔各答时间显示,它将是

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

    您想指定11:00 在加尔各答时间已经。为此,请使用one of the formats defined in the HttpDateParser documentation

      // 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] 日期:2013 年 8 月 2 日星期五 11:00:00 亚洲/加尔各答

    [0.0] 简单日期格式:2013-08-02 11:00am

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

    参考文献

    看看at this answer on Stack Overflow
    and maybe this one, too.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多