java - 使用时区格式化日期字符串并返回日期对象

标签 java simpledateformat java.util.date

我需要使用给定时区格式化字符串日期并返回日期对象。我目前位于 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/

相关文章:

java - 如何将 "01/30/2018 02:29:23 PM"转换为smalldatetime格式?我在我的应用程序中使用 MSSQL,并且该列是smalldatetime 格式

java - 使用多个信息填充 JComboBox

java - 如何在 Hibernate 的多列索引中指定列的顺序?

java - 使用 Provider 时如何将可配置参数传递给构造函数?

java.text.ParseException : Unparseable date Exception while converting timestamp value to time in java 异常

java - 获取字符串值,当我从具有日期类型的 excel 中读取时 (apache poi)

java - Camel : integration tests of asynchronous routes

java - SimpleDateFormat 解析后给出错误的输出

java - 为什么util.Date转发日期而不是减去日期?

java - 以微秒为单位创建字符串格式的实际日期,精度为微秒