在 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 中生成时间戳的主要内容,如果未能解决你的问题,请参考以下文章