我正在尝试将数据库与网络应用程序集成,该应用程序会从Google Calendar API中提取事件数据,然后将数据输入到数据库中。以下代码与Google提供的Quickstart类相同。
我基本上希望将“ DateTime start”转换为“ long start”。我需要SQL的long值。
import com.google.api.client.util.DateTime;
// ...
DateTime now = new DateTime(System.currentTimeMillis());
Events events = service.events().list(calendarId)
.setTimeMin(now)
.setOrderBy("startTime")
.setSingleEvents(true)
.execute();
List<Event> items = events.getItems();
if (items.isEmpty()) {
System.out.println("No upcoming events found.");
} else {
System.out.println("Upcoming events");
for (Event event : items) {
DateTime start = event.getStart().getDateTime();
DateTime end = event.getEnd().getDateTime();
if (start == null) {
start = event.getStart().getDate();
}
System.out.printf("%s\n", start.toString());
答案 0 :(得分:0)
Google已在Google HTTP客户端库中实现了Rfc3339解析器。您可以先尝试解析它,然后使用DateTime.getValue()函数将其转换为long。 您也可以尝试使用DatetimeFormatter将其格式化为所需的值。
DateTimeFormatter formatter = DateTimeFormatter
.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
.withZone(ZoneId.of("UTC"));
public void convertDatetime() {
String timeStamp = "2019-05-24T11:32:26.553955473Z";
DateTime dateTime = DateTime.parseRfc3339(timeStamp);
long millis = dateTime.getValue();
String result = formatter.format(new Date(millis).toInstant());