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

时间:2010-06-08 20:34:22

标签: java date gmt

  

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

我想获得格林威治标准时间的当前时间戳;任何想法如何做到这一点?


我设法获得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

2 个答案:

答案 0 :(得分:5)

new Date().getTime();

或者只是

System.currentTimeMillis();

两者都假设您将“timestamp”表示“Unix时代的毫秒数”。否则,澄清你的问题。

修改:回应评论/澄清/“回答”:

您误解存储 GMT时间戳与显示之间的区别。日期/时间戳将在内部以UTC时间的毫秒存储,并且与某个时区无关,,因为时间戳与您的时区无关。如果是格林威治标准时间晚上10点在檀香山,那也是格林威治标准时间晚上10点在纽约。它们具有相同的时间戳,但您的位置可能会使它们以不同的方式呈现。

另一方面,日历用于正确显示某些字段(例如,6月8日下午6点),因此 具有内部TimeZone的概念(自美国东部时间下午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));

答案 1 :(得分:1)

new Date()

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