c# - DynamoDB 无法转换为 System.DateTime

标签 c# amazon-web-services datetime amazon-dynamodb

我在我的应用程序中使用 C# 对象持久性模型,并从外部源填充表。我插入一行具有以下日期(在字符串列中):2018-12-12T22:27:14.73Z。这是使用以下 Go 代码从时间戳生成的:

&dynamodb.AttributeValue{S: aws.String(entity.TimeStamp.UTC().Format("2006-01-02T15:04:05.999Z"))}

但是,当尝试将 DynamoDB 对象持久性模型转换为 System.DateTime 时出现以下错误:System.InvalidOperationException:无法转换 [2018-12-12T22 :27:14.73Z] 类型的 Amazon.DynamoDBv2.DocumentModel.Primitive 到 System.DateTime

如果我让我的服务写入 System.DateTime(使用包含 DateTime 属性的 POCO),它看起来像这样:2018-12-19T07:45:36.431Z。我缺少什么阻止 AWS 正确反序列化我的日期?看起来我写的格式和亚马逊写的格式一样?

最佳答案

好的,我找到了答案。 DynamoDB 期望该列始终在时间戳的小数部分具有 3 位精度。当我从 Golang 格式化时间时,我使用 "2006-01-02T15:04:05.999Z" 作为我的格式字符串,但这会导致 time.Format 截断尾随零(当它们存在时)。将我的时间格式字符串更改为始终打印完整的精度,我能够解决我的问题。

也就是说,文档可以更清楚地说明此精度要求。或者异常(exception)可以更明确一点。希望这个问题/答案能让该异常在 Google 上搜索到!

关于c# - DynamoDB 无法转换为 System.DateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53847113/

相关文章:

c# - 如何打开给定尺寸的chrome浏览器

php - aws opsworks 默认部署到哪里?

javascript - 将任何 CDN 配置为无论请求什么 url 都只传送一个文件

javascript - Google App Script 将一天添加到日期

mysql - DATETIME col 用于几乎所有 SELECT 操作的表的主键

c# - 如何获取控制台应用程序的屏幕大小?

c# - 从 VTable 调用结构中的非托管函数

c# - SSMS 中的 SQL 查询有效但在 C# 中无效

java - 用 Java 创建 S3 客户端时出错

java - Date() 显示有关参数不匹配的错误