在 IST 时区 java 中生成时间戳

Posted

技术标签:

【中文标题】在 IST 时区 java 中生成时间戳【英文标题】:Generate Timestamp in IST Timezone java 【发布时间】:2015-03-14 22:04:35 【问题描述】:

我正在尝试在 GMT 时区生成当前时间戳,但由于我的机器设置为 IST,它仍在 IST 中生成。我正在使用此代码。 请帮忙!!

      String timeZone = "GMT";
   Calendar gmtCalendar =          Calendar.getInstance(TimeZone.getTimeZone(timeZone)); 
   Date date = gmtCalendar.getTime();
   endTime = new Timestamp(date.getTime());
   String eTime = NLSUtil.getFormattedDate(AdfUtil.getClientLocale(), new    java.sql.Date(endTime.getTime()));

【问题讨论】:

【参考方案1】:

我不知道 NLSUtil 是什么(你能详细说明一下吗?)但时间格式也有一个时区(默认为机器的时区,在你的情况下是 IST?)

Date toPrint = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS z");
format.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(format.format(toPrint));
format.setTimeZone(TimeZone.getTimeZone("PST"));
System.out.println(format.format(toPrint));

打印:

2015-01-16 10:18:34.604 GMT
2015-01-16 02:18:34.604 PST

【讨论】:

感谢 radai,抱歉粘贴了本地 api。 SimpleDateFormat 有效,但我试图从中获取 Timestamp 或 Date 对象。如果可行,请告诉我。 SimpleDateFormat 有一个 parse() 方法,它接受一个字符串作为参数并返回日期对象 - docs.oracle.com/javase/8/docs/api/java/text/…【参考方案2】:
 SimpleDateFormat dateFormatGmt = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");
dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT"));

//Local time zone   
SimpleDateFormat dateFormatLocal = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");

//Time in GMT
System.out.println(dateFormatLocal.parse( dateFormatGmt.format(new Date()) ));

请参考here

【讨论】:

【参考方案3】:

获取实例前添加TimeZone.setDefault(TimeZone.getTimeZone("UTC"));

【讨论】:

以上是关于在 IST 时区 java 中生成时间戳的主要内容,如果未能解决你的问题,请参考以下文章

如何在java中生成随机时间戳?

如何从java中的字符串时间戳中提取日期和时间

在 Python 中生成 RFC 3339 时间戳 [重复]

在流分析查询中生成倒置时间戳

如何在stm32f303中生成时间戳?

Java ZonedDateTime类怎么转化成时间戳