Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何以GMT获取当前时间?_Java_Date_Gmt - Fatal编程技术网

Java 如何以GMT获取当前时间?

Java 如何以GMT获取当前时间?,java,date,gmt,Java,Date,Gmt,可能重复: 我想以GMT获取当前时间戳;有什么办法吗 我设法得到了gmt格式的字符串 问题是我想把这个字符串转换成等价的timestamp对象,也就是说,同一时间但是作为timestamp对象 SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss zzz"); sdf.setTimeZone(TimeZone.getTimeZone("GMT")); Date date=new Date

可能重复:

我想以GMT获取当前时间戳;有什么办法吗


我设法得到了gmt格式的字符串 问题是我想把这个字符串转换成等价的timestamp对象,也就是说,同一时间但是作为timestamp对象

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
或者只是

System.currentTimeMillis();
两者都假定“timestamp”表示“从Unix纪元开始的毫秒”。否则,请澄清您的问题

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

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

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

无论如何,你的例子给出了一个简单的格式。如果要以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的。

重复:我想以时间戳格式获取当前GMT时间,我尝试了以下方法:Calendar cal=Calendar.getInstance(TimeZone.getTimeZone(“GMT”);Timestamp ts=新的时间戳(cal.getTimeInMillis());但我总是有时间local@ylazez:你说的“得到时间”是什么意思?你是说当你打印出来的时候?你是说当你通过一份事先准备好的声明来坚持它的时候?更新您的问题,以反映您实际想要做的事情:给出一小段代码来演示问题。您这样做的方式在内部使用GMT时间,但它可能会打印本地时间,具体取决于您使用它的方式。我想在GMT时间在数据库中插入时间戳,明白吗?@ylazez:然后将其放入一个PreparedStatement中,然后执行。它已经在GMT中,如果它在您的数据库中更改,那么您的数据库驱动程序有问题。您是手动将SQL语句构造为字符串还是其他什么?看,我使用:Timestamp Timestamp=new Timestamp(System.currentTimeMillis())获取当前时间;它总是以我的本地时间(GMT+3)获取时间,我使用hibernate.save插入此时间戳。要在postgresql数据库中保存对象,列是带有时区的时间戳
    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));
new Date()