[英]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.