gpt4 book ai didi

java - 将时区转换回本地时区

转载 作者:行者123 更新时间:2023-12-01 13:10:25 24 4
gpt4 key购买 nike

我一直在将 Date 对象转换回本地时区。我用谷歌搜索了很多,但找不到解决方案。

我的场景是:我向位于与我的时区不同的其他时区的 Web 服务器发送一个请求(包含本地时区 04/01/2014T00:00:00+0530 中的完整日期字符串)。服务器将其适本地转换为 UTC 并进行一些操作并发回 CSV 文件。我在 CSV 中有一个日期列,该列始终采用 GMT。

String input = "04/01/2014T00:00:00+0530";
DateFormat inputDateFormat = new SimpleDateFormat("MM/dd/yyyy'T'HH:mm:ssZ");
DateFormat csvFileDateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm z");

Date inputDate = inputDateFormat.parse(input); // Mon Mar 31 18:30:00 GMT 2014
// inputDateFormat.getTimeZone(); // is always GMT

// After some processing I create CSV file
// within a loop
Date csvDate = // got Date from some operation, for simplicity I removed the code.
csvFileDateFormat.format(csvDate); // **HERE IS THE ISSUE**
// end of loop

我想正确设置 csvFileDateFormat 的时区。下面的代码有效,但我不想硬编码“GMT+05:30”。相反,只需要从输入字符串中提取时区。

csvFileDateFormat.setTimeZone(TimeZone.getTimeZone("GMT+05:30")); // I dont want to hard code

非常感谢任何帮助。PS:我无法选择使用任何其他库,例如 joda 等...

问候阿伦达杰

最佳答案

也许这个功能会对你有所帮助:

private static TimeZone getTimeZoneFromString(String inputDateStr)
{
// TimeZone inputTimeZone = null;
// null or default
TimeZone inputTimeZone = TimeZone.getDefault();
try
{
DateFormat inputDateFormat = new SimpleDateFormat("MM/dd/yyyy'T'HH:mm:ssZ");
Date inputDate = inputDateFormat.parse(inputDateStr);
Date inputDate2 = inputDateFormat.parse(inputDateStr.substring(0, 19) + "+0000");
int offset = (int) (inputDate2.getTime() - inputDate.getTime());
for (String tzId : TimeZone.getAvailableIDs())
{
TimeZone tz = TimeZone.getTimeZone(tzId);
if (tz.getOffset(inputDate.getTime()) == offset)
{ // take the first matching one, display name doesn't matter
inputTimeZone = tz;
break;
}
}
}
catch (ParseException e)
{
e.printStackTrace();
}
return inputTimeZone;
}

关于java - 将时区转换回本地时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22912113/

24 4 0