如何使用Amplify将JS日期传递至AWS Cognito的DateTime字段
解决AWS Cognito自定义DateTime属性格式错误问题
Cognito的自定义DateTime属性要求使用不带毫秒的ISO 8601 UTC格式(例如2024-05-20T12:34:56Z),但JavaScript的date.toISOString()会返回带毫秒的字符串(如2024-05-20T12:34:56.789Z),这就是触发格式无效错误的核心原因。
修正方案:
移除日期字符串的毫秒部分:
通过字符串截取快速生成符合要求的格式:const date = new Date(); // 截断毫秒段,保留UTC标识Z const formattedDate = date.toISOString().split('.')[0] + 'Z'; Auth.signUp({ // 填写username、password等必填参数 attributes: { 'custom:mydate': formattedDate } });额外检查项:
- 确认用户池内的自定义属性类型确实设为
DateTime,而非String - 确保属性名称前缀
custom:未遗漏,Cognito自定义属性必须携带该前缀 - 若需使用非UTC时区时间,需先转换为UTC格式再处理(Cognito DateTime属性默认存储UTC时间)
- 确认用户池内的自定义属性类型确实设为
内容的提问来源于stack exchange,提问作者Gasim
相关产品推荐
相关产品推荐

