我需要使用给定时区格式化字符串日期并返回日期对象。我目前位于 IST 时区。
所以 IST 比 UTC 早 5 小时 30 分钟。
public void getDate(){
String dateStr = "11/25/2016T13:30:00.000";
String dateFormat = "MM/dd/yyyy'T'HH:mm:ss.SSS";
Date date = formatedStringToDate(dateStr, dateFormat);
System.out.println(date);
}
public static Date formatedStringToDate(final String date, final String dateFormat) throws ParseException {
final SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
Date parsedDate = null;
if (date != null) {
try {
parsedDate = sdf.parse(date);
} catch (ParseException e) {
throw e;
}
}
return parsedDate;
}
我得到以下输出。
Fri Nov 25 19:00:00 **IST** 2016
时间似乎从 5.30 小时开始变化,但如果将 IST 时间转换为 UCT 时间,则应该是 13:30:00 之前的 5.30 小时,即 08:00:00?
另外,在本例中,如何更改输出字符串中突出显示的 IST 部分以显示当前时区 UTC?
最佳答案
当您在 Date
上调用 toString
(通过打印它)时,您将获得默认格式(因为 Date
code> 是一个对象,它存储自一个纪元以来的毫秒数或 Java 9+ 中的纳秒数)。要查看 UTC 格式的结果,您需要类似以下内容:
final DateFormat sdf = DateFormat.getDateTimeInstance(DateFormat.FULL,
DateFormat.FULL);
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = formatedStringToDate(dateStr, dateFormat);
System.out.println(sdf.format(date)); // <-- format the Date
关于java - 使用时区格式化日期字符串并返回日期对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40800486/