繁体   English   中英

Google日历如何获取日期对象

[英]Google Calendar How to get Date Object

我正在尝试使用Java中的Google Calendar API显示Google日历的事件。 但是我对如何以一种美观的格式获取事件的日期(和时间)一无所知。 我唯一能做的是以下几点:

DateTime now = new DateTime(System.currentTimeMillis());
Events events = service.events().list("primary")
        .setMaxResults(7)
        .setTimeMin(now)
        .setOrderBy("startTime")
        .setSingleEvents(true)
        .execute();
items = events.getItems();


items.get(0).getStart().getDateTime();

导致以下输出:2018-11-06T18:00:00.000 + 01:00

关于如何获取它的任何想法,例如作为日期对象?

根据Google API参考 ,类型DateTime具有方法getValue()

返回日期/时间值,表示自Unix纪元以来的毫秒数。

要获取java.util.Date我们可以使用以下long值:

Date date = new Date(items.get(0).getStart().getDateTime().getValue());

但请注意,自Java 8起就有java.time API。 要获得LocalDateTime您可以像这样继续:

ZoneOffset offset = ZoneOffset.ofTotalSeconds(items.get(0).getStart().getDateTime().getTimeZoneShift() * 60);
ZoneId zone = ZoneId.ofOffset("UTC", offset);    
Instant instant = date.toInstant();
LocalDateTime dateTime = LocalDateTime.ofInstant(instant, zone);

为了确定适当的ZoneId我们使用方法getTimeZoneShift()

返回以分钟为单位的UTC时区偏移量,或者返回0(仅日期)。

由于ZoneId.ofOffset将以秒为单位的值作为第二个参数,因此我们必须先将getTimeZoneShift()返回的分钟转换为秒。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM