我的代码使用-Duser.timezone=UTC运行。
我希望从字符串中创建一个具有正确时区的间隔。例如:
"2016 - 09 - 14 - t00:00:00.000 07:00/2016 - 09 - 15 - t07:00:00.000 07:00"
Interval.parse(str)
应该给我
[2016 - 09 - 14/2016 - 09 - 15] 在 PST 。
但这总是给我一个UTC的间隔,而不是-Duser的PST b/c。时区= UTC选项。
我所知道的解决这个问题的唯一方法是繁琐的,包括以下步骤:
- 解析字符串
- 确定偏移量
查找偏移量对应的时区。(白名单?还是有人已经有清单了?)
有更好的方法吗?
这应该可以让你开始:
String dateString = "2016-09-14T00:00:00.000-0700/2016-09-15T07:00:00.000-0700";
String datesInString[] = dateString.split("/");
SimpleDateFormat inputDateFormat = new SimpleDateFormat(
"yyyy-MM-dd'T'HH:mm:ss.SSSZ");
SimpleDateFormat outputDateFormat = new SimpleDateFormat("yyyy-MM-dd");
outputDateFormat.setTimeZone(TimeZone.getTimeZone("PST"));
Date date0 = inputDateFormat.parse(datesInString[0]);
Date date1 = inputDateFormat.parse(datesInString[1]);
String result = outputDateFormat.format(date0) + "/"
+ outputDateFormat.format(date1) + " "
+ outputDateFormat.getTimeZone().getID();
System.out.println(result);