You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Classroom API ScheduledTime字段支持的正确日期格式是什么?

正确解决方案

Google Classroom API的scheduledTime字段要求传入符合RFC3339规范的日期时间字符串,示例格式如下:

  • UTC时区格式:2024-05-20T14:30:00Z
  • 带偏移时区格式:2024-05-20T22:30:00+08:00

你之前写法报错的核心原因是:googleDate.getValue()返回的是13位毫秒级时间戳(数字类型),直接拼接Z后得到的是1716215400000Z这类格式,完全不符合RFC3339的日期字符串要求,所以接口校验失败。

正确代码写法

方案1:直接使用Google自带DateTime类的toString方法

com.google.api.client.util.DateTime类本身已经内置了RFC3339格式的序列化逻辑,直接调用toString()即可得到符合要求的字符串:

com.google.api.client.util.DateTime googleDate = new com.google.api.client.util.DateTime(new java.util.Date());
// 如果需要指定未来的定时发布时间,替换new Date()为你要设置的时间点的Date对象即可

CourseWork courseWork = new CourseWork()
        .setCourseId(course.getId())
        .setTitle("title PUBLISHED 2")
        .setDescription("desc")
        // 这里直接用googleDate.toString(),不要自己拼接
        .setScheduledTime(googleDate.toString())
        .setMaxPoints(100.0)
        .setDueDate(date)
        .setDueTime(timeOfDay)
        .setWorkType("ASSIGNMENT")
        .setState("PUBLISHED");

方案2:使用Java 8+时间API

如果习惯用Java 8新增的java.time包,直接调用Instant的toString()方法即可输出符合要求的UTC格式字符串:

// 示例:设置为当前时间后1小时发布
Instant scheduledInstant = Instant.now().plus(Duration.ofHours(1));
CourseWork courseWork = new CourseWork()
        // 其他配置不变
        .setScheduledTime(scheduledInstant.toString())
        // 其他配置不变
        ;

内容的提问来源于stack exchange,提问作者Francislainy Campos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 05:27:03