2

可能重复:
如何在 Java 中获取 UTC 或 GMT 的当前日期和时间?

我想获取 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
4

2 回答 2

5
new Date().getTime();

要不就

System.currentTimeMillis();

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

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

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

另一方面,日历用于正确显示某些字段(例如,它是 6 月 8 日下午 6 点),因此确实具有 TimeZone 的内部概念(因为 EDT 下午 6 点与 PDT 下午 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));
于 2010-06-08T20:36:33.390 回答
1
new Date()

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

于 2010-06-08T20:40:30.377 回答