Google 教室 API ScheduledTime 的日期格式
Date Format For Google Classroom API ScheduledTime
我在使用 Google 教室 API 创建作业时尝试设置预定时间。但是,我对需要哪种日期格式感到困惑。根据错误消息,它似乎接受了一个字符串,该字符串最后包含时间戳和时区或 Z。其中,我尝试使用 System.currentTimeMillis() + "Z"
,以及 googleDate.getValue() + "Z"
、googleDate.getValue()
,因为 Google 日期格式似乎是基于 this doc 的方式但是 none 似乎有效。
有什么想法吗?
谢谢。
String timezone = timestamp + offset + "";
System.currentTimeMillis()
com.google.api.client.util.DateTime googleDate =
new com.google.api.client.util.DateTime(new java.util.Date());
// Date javaDate = new Date(googleDate.getValue());
CourseWork courseWork = new CourseWork()
.setCourseId(course.getId())
.setTitle("title PUBLISHED 2")
.setDescription("desc")
.setScheduledTime(googleDate.getValue() + "Z")
.setMaxPoints(100.0)
.setDueDate(date)
.setDueTime(timeOfDay)
.setWorkType("ASSIGNMENT")
.setState("PUBLISHED")
;
这是我手动添加时间戳并将其转换为字符串时得到的结果。
而这使用 Google 日期。
还有新的 Java 8 个 API
这有效:
LocalDate localDate = LocalDate.now().plusDays(7);
java.util.Date date1 = java.util.Date.from(localDate.atStartOfDay()
.atZone(ZoneId.systemDefault())
.toInstant());
String s = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX").format(date1);
似乎导入使用的是 Google 日期 class 而不是 java.util.date。
java.time
我建议您使用 java.time,现代 Java 日期和时间 API,作为您的日期和时间工作。以下代码给出的结果与您的答案中的代码相同。
LocalDate localDate = LocalDate.now().plusDays(7);
String s = localDate.atStartOfDay(ZoneId.systemDefault())
.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME);
System.out.println(s);
今天我所在时区的输出:
2021-10-20T00:00:00+02:00
与您自己的答案相比,您的转换次数更少,并且您无需编写自己的格式模式字符串,因为我们需要的格式化程序是内置的。
我在使用 Google 教室 API 创建作业时尝试设置预定时间。但是,我对需要哪种日期格式感到困惑。根据错误消息,它似乎接受了一个字符串,该字符串最后包含时间戳和时区或 Z。其中,我尝试使用 System.currentTimeMillis() + "Z"
,以及 googleDate.getValue() + "Z"
、googleDate.getValue()
,因为 Google 日期格式似乎是基于 this doc 的方式但是 none 似乎有效。
有什么想法吗?
谢谢。
String timezone = timestamp + offset + "";
System.currentTimeMillis()
com.google.api.client.util.DateTime googleDate =
new com.google.api.client.util.DateTime(new java.util.Date());
// Date javaDate = new Date(googleDate.getValue());
CourseWork courseWork = new CourseWork()
.setCourseId(course.getId())
.setTitle("title PUBLISHED 2")
.setDescription("desc")
.setScheduledTime(googleDate.getValue() + "Z")
.setMaxPoints(100.0)
.setDueDate(date)
.setDueTime(timeOfDay)
.setWorkType("ASSIGNMENT")
.setState("PUBLISHED")
;
这是我手动添加时间戳并将其转换为字符串时得到的结果。
而这使用 Google 日期。
还有新的 Java 8 个 API
这有效:
LocalDate localDate = LocalDate.now().plusDays(7);
java.util.Date date1 = java.util.Date.from(localDate.atStartOfDay()
.atZone(ZoneId.systemDefault())
.toInstant());
String s = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX").format(date1);
似乎导入使用的是 Google 日期 class 而不是 java.util.date。
java.time
我建议您使用 java.time,现代 Java 日期和时间 API,作为您的日期和时间工作。以下代码给出的结果与您的答案中的代码相同。
LocalDate localDate = LocalDate.now().plusDays(7);
String s = localDate.atStartOfDay(ZoneId.systemDefault())
.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME);
System.out.println(s);
今天我所在时区的输出:
2021-10-20T00:00:00+02:00
与您自己的答案相比,您的转换次数更少,并且您无需编写自己的格式模式字符串,因为我们需要的格式化程序是内置的。