java - 转换值时重新格式化日期/时间

标签 java

我收到的发票的日期 (TaxPointDate) 格式为“2012-10-31T00:00:00+01:00”

但是,我需要将“+01:00”部分替换为“+00:00”,因为我遇到了困难,该值已从“2012-10-31T00:00:00+01:00”更改为当我重新格式化时,原始文件为“2012-10-30T23:00:00.000Z”,这不是我想要的。

我该如何解决这个问题?

谢谢

最佳答案

也许这对你有用。但我认为你不会在你的应用程序中使用它。问题是,我更改了 DefaultTimeZone,因此每个日期的输出将是“GMT”。我还添加了 TimeZones 之间的偏移量,以便您的输出是原始时间,末尾带有 +0000。

但请注意,这会更改您的日期。它将时间偏移添加到小时中,并且您的原始日期和新日期不相等。

“2012-10-31T00:00:00+01:00”和“2012-10-30T23:00:00+00:00”是相同的日期。输出仅因时区不同而不同。

    SimpleDateFormat originalDateParser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
    Date date = originalDateParser.parse("2012-10-31T00:00:00+0100");
    System.out.println("Date Input" + originalDateParser.format(date));

    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    TimeZone timeZoneInputDate = cal.getTimeZone();

    TimeZone.setDefault(TimeZone.getTimeZone("GMT"));

    System.out.println("TimeZone InputDate: " + timeZoneInputDate.getDisplayName());
    cal.add(Calendar.MILLISECOND, (int) timeZoneInputDate.getOffset(date.getTime()));

    SimpleDateFormat newDateParser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
    System.out.println(newDateParser.format(cal.getTime()));

    TimeZone.setDefault(null);

关于java - 转换值时重新格式化日期/时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18400849/

相关文章:

java - 如何在java程序中运行不同的java程序?

java - Java-Spring-Hibernate 中的日期格式发生变化

java - 检查 tpl-if-tag,gxt 模板中的字符是否为中文

java - 当有人试图关闭窗口时如何阻止窗口被释放

java - 如何用谷歌驱动解决 "org.openqa.selenium.WebDriverException: java.net.ConnectException: Failed to connect to localhost/"?

Java 从 SOAP 服务 URL 调用获取响应

java - 我是否必须在每节课中都使用 "package"术语?

java - 需要有关 java map 和 javabean 的帮助

java - 通过 Apache Kafka 发送的 Python 处理的 Avro 格式数据在 Apache Camel/Java 处理器中进行反序列化时不会产生相同的输出

java - 如何创建 Maven 库(非可执行 JAR)