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()