gpt4 book ai didi

java - 将时区更改为伦敦时的日期问题

转载 作者:行者123 更新时间:2023-11-30 06:14:27 25 4
gpt4 key购买 nike

我有以下代码:

package com.company.customer;

import java.util.*;
import java.text.*;
import java.io.*;

public class DateSample {
private TimeZone GMT_TIMEZONE = TimeZone.getTimeZone("GMT");
private SimpleDateFormat sdfDate = new SimpleDateFormat();
private Date inputDate;
private String dateInString = "2015-07-15";
private DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");

public void datePrint() {
sdfDate.setTimeZone(GMT_TIMEZONE);
sdfDate.applyPattern("EE-ddMMM");

try {
inputDate = formatter.parse(dateInString);
} catch (Exception e) {
System.out.println("populateTabDates: ParseException");
}

String formatResults = sdfDate.format(inputDate);

// Modify the return to cut down the weekday: Fri-20Aug => Fr-20Aug
formatResults = formatResults.substring(0, 2) + formatResults.substring(3);

System.out.println(formatResults);
}
}

当我将 PC 设置为伦敦时区并将 PC 时间更改为上午 8 点或 9 点时,问题出现了。然后,formatResults 变量显示 14 而不是 7 月 15 日;有什么想法吗?

最佳答案

您还没有为 formatter 设置时区,所以这是系统默认时区。

因此,您正在使用系统默认时区解析“2015-07-15”。如果那是伦敦,则解析日期为 2015-07-15T00:00:00+01,即 2015-07-14T23:00:00Z。当您使用 UTC 时区和日期部分对其进行格式化时,您将获得 7 月 14 日。

基本上,将两个 格式化程序置于同一时区,或者您应该期望解析/格式化对“移动”该值。 (如果您也在解析和格式化一天中的时间,这会更容易看到。)

我还建议使用 UTC 作为 UTC 时区的名称,而不是 GMT;后者可能会让一些人误以为它是英国时区,在 GMT 和 BST 之间交替。

关于java - 将时区更改为伦敦时的日期问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30334853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com