【发布时间】:2019-01-20 09:59:07
【问题描述】:
我这里有字符串类型的日期和时间值。
- appDate = 2/19/2019
- 开始时间 = 下午 4:15
我想通过 api 在谷歌日历中插入一个事件。
当我解析日期字符串时,它会根据我的本地区域设置进行转换。我住在 GMT+03.00 时区。但我想在字符串中插入日期和时间。
原样输出: {dateTime=2019-01-19T04:15:00.000+03:00, timeZone=America/New_York}
我需要得到这个: {dateTime=2019-01-19T04:15:00.000-05:00, timeZone=America/New_York}
使用下面的代码块,它将晚上 8:15 插入谷歌日历。
SimpleDateFormat formatter = new SimpleDateFormat("mm/dd/yyyy HH:mm a", Locale.US);
String dateInString = appDate + " " + startTime;
Date date = formatter.parse(dateInString);
DateTime startDateTime = new DateTime(date);
EventDateTime start = new EventDateTime().setDateTime(startDateTime).setTimeZone("America/New_York");
【问题讨论】:
-
您输入的日期/时间是在哪个时区? (不管它在哪里解析或存储在哪里)
-
我在 GMT-05:00 时区的输入值。我不想更改输入中的任何内容。仅将字符串值按原样解析为日期格式。然后将其发送到 Google 日历。
-
我没有尝试 Calendar 对象。 Google Calendar api 需要 DateTime 输入类型。
-
仅供参考,非常麻烦的旧日期时间类,如
java.util.Date、java.util.Calendar和java.text.SimpleDateFormat现在是 legacy,被 Java 8 中内置的 java.time 类所取代,之后。见Tutorial by Oracle。
标签: java datetime timezone google-calendar-api simpledateformat