本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
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
重复:stackoverflow.com/questions/308683/…
new Date().getTime();
要不就
System.currentTimeMillis();
两者都假设您将"timestamp"表示"Unix时代的毫秒数"。否则,请澄清您的问题。
编辑:回应评论/澄清/"回答":
您误解了存储GMT时间戳与显示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));
我希望以时间戳格式获取GMT中的当前时间我尝试了以下内容:Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));时间戳ts =新的时间戳(cal.getTimeInMillis());但它总是在我当地的时间
@ylazez:"得到时间"是什么意思?你的意思是什么时候打印它?你的意思是当你通过PreparedStatement坚持它?更新您的问题以反映您实际上要做的事情:提供一小段代码来演示问题。你正在做的方式在内部使用GMT时间,虽然它可能打印当地时间取决于你尝试用它做什么。
我想在gmt时间在数据库中插入时间戳,得到了吗?
@ylazez:然后把它放在PreparedStatement中去吧。它已经在GMT中,如果它在您的数据库中发生变化,那么您的数据库驱动程序就会出现问题。您是手动构建SQL语句作为字符串吗?
看看我得到的当前时间使用:Timestamp timestamp = new Timestamp(System.currentTimeMillis());它总是在我的本地获取时间GMT + 3并且我使用hibernate.save插入此时间戳来保存postgresql数据库中的对象,该列是带时区的时间戳
@ylazez:那么也许你应该从一开始就问过这个问题。花点时间向我们提供我们需要帮助您的信息。你刚才所说的一切都不在于问题:这对你来说不是一个问题吗?我建议从头开始,搜索互联网和StackOverflow,然后如果你仍然卡住,发布一个包含正确信息的新问题。
new Date()
...因为所有Date对象都是基于GMT的。