所以我的数据库中有 2 种类型的日期,date (yyyy-mm-dd)
和datetimeoffset (yyyy-mm-ddThh:mm:ss.ms+Z)
,我想知道当我从数据库中获取数据并将其作为 json 传递给 UI/mobile 时,处理它的最佳实践是什么。
我过去总是将日期解析为datetimeoffset
所以正常的日期会像2018-09-24T00:00:00.000+00:00
而不是简单地2018-09-24
但它可以完美地与已经保存在数据库中的datetimeoffset
一起使用
您可以通过多种方式处理这种情况。
1:从API端始终给出预定义的日期格式值
示例yyyy-mm-ddThh:mm:ss.ms+Z
根据条件从客户端进行转换。
2:保留不同的视图模型/属性可用于存储yyyy-mm-dd
您可以给出string
数据类型,yyyy-mm-ddThh:mm:ss.ms+Z
只是DateTime
。 根据您的数据库,您可以编写条件并映射特定数据。
3:保留一个用于返回日期的属性,并将其设为string
示例:Public string CurrentDate{get;set;}
,您可以简单地映射数据库值(应该完成转换(。在这种情况下,客户无需担心日期转换,他们可以简单地显示您从 API 传递的内容。
注意:方法3不是可取的,因为在某些地方,用户可能会看到yyyy-mm-dd
在其他地方yyyy-mm-ddThh:mm:ss.ms+Z
。
看看 SQL Server数据类型映射
您将看到 SQL Server 的Date
、DateTime
和DateTime2
都映射到 。Net的DateTime
数据类型,DateTimeOffset
映射到DateTimeOffset
。
SQL Server Database Engine type .NET Framework type date (SQL Server 2008 and later) DateTime datetime DateTime datetime2 (SQL Server 2008 and later) DateTime datetimeoffset (SQL Server 2008 and later) DateTimeOffset