我想获得格林威治标准时间的当前时间戳; 任何想法如何做到这一点?
我设法得到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
Run Code Online (Sandbox Code Playgroud)
new Date().getTime();
Run Code Online (Sandbox Code Playgroud)
要不就
System.currentTimeMillis();
Run Code Online (Sandbox Code Playgroud)
两者都假设您将"timestamp"表示"Unix时代的毫秒数".否则,请澄清您的问题.
编辑:回应评论/澄清/"回答":
您误解了存储 GMT时间戳与显示 GMT时间戳之间的区别.日期/时间戳将在内部以UTC时间的毫秒存储,并且与某个时区无关,因为无论您的时区如何,时间戳都相同.如果是格林威治标准时间晚上10点在檀香山,那也是格林威治标准时间晚上10点在纽约.它们具有相同的时间戳,但您的位置可能会使它们以不同方式呈现.
日历,另一方面,是为显示某些领域的正确(如,这是在6月8日下午6点),因此不存在时区的内部概念(因为下午6:00 EDT是不一样的时间为下午6点PDT).
无论如何,你的例子给了一个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));
Run Code Online (Sandbox Code Playgroud)