Microsoft Graph DateTimeTimeZone到LocaldateTime

时间:2018-01-11 09:52:15

标签: c# datetime graph microsoft-graph

当我从Graph API获取日期(事件或任务)时,它将保存在DateTimeTimeZone类的实例中。此对象由作为字符串的2个属性(日期时间和时区)组成,并且呈现UTC日期。有没有办法将这个“日期”转换为本地DateTime?

2 个答案:

答案 0 :(得分:4)

DateTimeTimeZone提供了采用Datetime和timezone字符串的扩展方法,您可以通过进入类DateTimeTimeZoneExtensions

的定义进行检查

答案 1 :(得分:0)

要提供一种可行的替代方法来转换为 LocalDateTime 或 Date ,但这些都不建议一起使用,您可以在 Java 中执行以下操作(基于 Event event 的示例)

DateTimeTimeZone 到 LocalDateTime:

SimpleDateFormat graphDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'.0000000'");
// set preferable timezone
graphDateFormat.setTimeZone(TimeZone.getTimeZone("UTC");
// set preferable zoneID
ZoneId timeZoneID = ZoneId.of("Europe/Brussels");

LocalDateTime startDateTime = LocalDateTime.ofInstant(graphDateFormat.parse(event.start.dateTime).toInstant(), timeZoneID);

DateTimeTimeZone 到日期:

Date startDate = Date.from(Instant.parse(graphCalendarEvent.start.dateTime.substring(0, 20) + "Z"));

从 LocalDateTime 到 DateTimeTimeZone 的转换:

LocalDateTime localDateTime = LocalDateTime.now();
DateTimeTimeZone dateTimeTimeZone = new DateTimeTimeZone();
dateTimeTimeZone.dateTime = localDateTime.toString();
// set preferable timezone
dateTimeTimeZone.timeZone = "W. Europe Standard Time";

记住人们,仅仅因为它可以投入生产,并不意味着它应该