如何将Google的DateTime对象转换为长型值?

时间:2019-05-24 09:49:33

标签: java google-calendar-api

我正在尝试将数据库与网络应用程序集成,该应用程序会从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());

1 个答案:

答案 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());