如何获得格林威治标准时间的当前时间? [复制]

Posted

技术标签:

【中文标题】如何获得格林威治标准时间的当前时间? [复制]【英文标题】:How to get the current time in GMT? [duplicate] 【发布时间】:2011-03-01 08:56:18 【问题描述】:

可能重复:How can I get the current date and time in UTC or GMT in Java?

我想获取 GMT 的当前时间戳;任何想法如何做到这一点?


我设法得到一个 gmt 格式的字符串 问题是我想将此字符串转换为等效的时间戳对象,即同一时间但作为时间戳对象

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss zzz");
        sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
        Date date=new Date();
        String s=sdf.format(date);
        System.out.println("GMT: "+s);
        //need to convert the string to equivalent timestamp object

【问题讨论】:

复制:***.com/questions/308683/… 【参考方案1】:
new Date().getTime();

或者只是

System.currentTimeMillis();

两者都假设您使用“时间戳”来表示“从 Unix 纪元开始的毫秒数”。否则,请澄清您的问题。

编辑:回应评论/澄清/“答案”:

您误解了存储 GMT 时间戳和显示 GMT 时间戳之间的区别。日期/时间戳将在内部存储为从 UTC 纪元开始的毫秒数,并且与某个时区无关,因为无论您的时区如何,时间戳都是相同的。如果是火奴鲁鲁的格林威治标准时间晚上 10 点,那么它也是纽约的格林威治标准时间晚上 10 点。它们具有相同的时间戳,但您的位置可能会使它们呈现不同的方式。

另一方面,日历用于正确显示某些字段(例如,6 月 8 日下午 6 点),因此 有一个内部时区的概念(因为美国东部时间下午 6 点与太平洋夏令时间下午 6 点不同)。

无论如何,您的示例给出了 SimpleDateFormat。如果你想显示你已经是 GMT 的时间戳在 GMT,做同样的事情并传入时间戳。

    Timestamp timestamp = new Timestamp(System.currentTimeMillis());
    SimpleDateFormat fmt = new SimpleDateFormat("HH:mm:ss.SS");
    fmt.setTimeZone(TimeZone.getTimeZone("GMT"));
    System.out.println(fmt.format(timestamp));

【讨论】:

我想以时间戳格式获取 GMT 的当前时间,我尝试了以下方法: Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));时间戳 ts=new 时间戳(cal.getTimeInMillis());但它总是在我当地有时间 @ylazez:你所说的“获得时间”是什么意思?你是说打印的时候?你的意思是当你通过 PreparedStatement 持久化它时?更新您的问题以反映您实际尝试做的事情:提供一小段代码来演示问题。您这样做的方式在内部使用 GMT 时间,但它可能会根据您尝试使用它来打印当地时间。 我想在 GMT 时间在数据库中插入时间戳,明白了吗? @ylazez:然后将其放入 PreparedStatement 中即可。它已经在格林威治标准时间,如果它在您的数据库中发生更改,那么您的数据库驱动程序有问题。您是手动将 SQL 语句构造为字符串还是什么? 看我得到当前时间使用:Timestamp timestamp = new Timestamp(System.currentTimeMillis());它总是在我的本地获取时间,即 GMT+3,我使用 hibernate.save 插入此时间戳以将对象保存在 postgresql 数据库中,该列是带时区的时间戳【参考方案2】:
new Date()

...因为所有 Date 对象都是基于 GMT 的。

【讨论】:

以上是关于如何获得格林威治标准时间的当前时间? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

格林威治标准时间的奇怪 strtotime 一直有效到 3 月 31 日

gmt时间格式是啥意思

格林威治时间

gmt6.00北京时间是?

全面解析Java日期时间API

GMT+8是啥意思