Cor*_*son 3 c# datetime amazon-web-services 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"))}
Run Code Online (Sandbox Code Playgroud)
但是,当尝试将DynamoDB对象持久性模型转换为时,该模型会System.DateTime出现错误:System.InvalidOperationException: Unable to convert [2018-12-12T22:27:14.73Z] of type Amazon.DynamoDBv2.DocumentModel.Primitive to System.DateTime
如果我让我的服务写一个System.DateTime(使用包含一个DateTime属性POCO),它看起来是这样的:2018-12-19T07:45:36.431Z。我缺少什么使AWS无法正确反序列化我的日期?看起来我以与Amazon相同的格式编写它们?
好的,我找到了答案。DynamoDB希望该列在时间戳的小数部分中始终具有3位数的精度。当我从Golang格式化时间时,我将其"2006-01-02T15:04:05.999Z"用作格式字符串,但这会time.Format截断尾随零(如果存在)。更改时间格式字符串以始终打印出全部精度,可以解决问题。
也就是说,有关此精度要求的文档可能会更清楚一些。或者,异常可能会更明确一些。希望通过此问题/答案可以使该异常在Google上搜索!