【问题标题】:Java - Store GMT timeJava - 存储 GMT 时间
【发布时间】:2010-10-25 06:03:57
【问题描述】:
  1. 我的服务器有 GMT+7,所以如果我移动到另一个有另一个 GMT 时区的服务器,那么存储在 db 中的所有日期都会不正确?
  2. 是的 Q1 是正确的,我将在 GMT+0 时区存储日期并在每个成员选择的自定义 GMT 时区显示它怎么样
  3. 我如何在 java 中使用 GMT+0 获取日期

【问题讨论】:

标签: java timezone gmt


【解决方案1】:

1) 引用 javadocs,Java 毫秒时间戳是

当前时间与 UTC 1970 年 1 月 1 日午夜之间的差异,以毫秒为单位。

因此,由于时间戳为 UTC/GMT,如果将其存储在数据库中,则无论服务器的时区如何,该日期都是正确的。

2) 根据时区格式化显示的时间戳是正确的方法。

3) 创建一个新的 java.util.Date 实例并调用 getTime() 将为您获取 Java 中 GMT+0 的时间戳。

【讨论】:

    【解决方案2】:

    补充一点,一旦你有了 java.util.Date,你就可以将它“转换”到任何时区(由用户选择)。这是 Groovy 中的代码示例(将在 Java 中使用轻微的 mods):

    // This is a test to prove that in Java, you can create ONE java.util.Date
    // and easily re-display it in different TimeZones
    fmtStr = "MM/dd/yyyy hh:mm aa zzz"
    myDate = new java.util.Date()
    sdf = new java.text.SimpleDateFormat(fmtStr)
    
    // Default TimeZone
    println "Date formatted with default TimeZone: " + sdf.format(myDate)
    
    // GMT
    sdf.setTimeZone(TimeZone.getTimeZone("GMT"))
    println "Date formatted with GMT TimeZone: " + sdf.format(myDate)
    
    // America/New_York
    sdf.setTimeZone(TimeZone.getTimeZone("America/New_York"))
    println "Date formatted with America/New_York TimeZone: " + sdf.format(myDate)
    
    // PST
    sdf.setTimeZone(TimeZone.getTimeZone("PST"))
    println "Date formatted with PST TimeZone: " + sdf.format(myDate)
    

    【讨论】:

      【解决方案3】:

      默认情况下,当您在 java 中获取当前时区的日期时,您可以使用 TimeZone 类来获取系统时间运行所在的时区。大多数数据库支持可以使用时区存储日期,这可能将是执行此操作的正确方法,但确切的格式可能取决于您使用的数据库。

      【讨论】:

        【解决方案4】:

        我建议您仅将 Date 用作“持有者”,并建议您改用 Calendar 实例。要获取 GMT 时区的日历,只需使用以下命令:

        Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+00"))
        

        当您处理时间和日期时,日历会带来很多好处。例如,添加一个小时很简单:

        cal.add(Calendar.HOUR, 1);
        

        最后,当你需要一个日期时,你只需使用这个:

        Date date = cal.getTime();
        

        【讨论】:

          【解决方案5】:

          对于第三季度,考虑使用 ZonedDateTime 类。

          【讨论】:

            猜你喜欢
            • 2019-03-22
            • 2011-07-11
            • 2014-01-12
            • 2016-04-07
            • 2017-08-31
            • 2023-03-26
            • 2012-01-23
            • 2015-07-21
            • 1970-01-01
            相关资源
            最近更新 更多