![](/img/trans.png)
[英]How to trigger a C# function at a certain time with millisecond precision?
[英]How can set the precision of millisecond in c#
我在c#中有一个休息。 有了这个ws,我可以用毫秒来设置日期时间。 这是我的请求的一个例子:
{ "sensorId": 656,
"value": "128",
"timestamp": "2016-06-01 11:20:50.125",
"values":
[{"value":"2064","timestamp":"2016-06-09 13:23:50.100"}]
}
如您所见,有两个日期以毫秒为单位。 第一次约会,以.125毫秒结束。
在我的代码中,我使用此代码反序列化字段Date。
public class SensorDateTimeConverter : DateTimeConverterBase//IsoDateTimeConverter
{
private const string Format = "yyyy-MM-dd HH:mm:ss.fff";
public override void WriteJson(JsonWriter writer,
object value,
JsonSerializer serializer)
{
writer.WriteValue(((DateTime)value).ToString(Format));
writer.Flush();
}
public override object ReadJson(JsonReader reader,
Type objectType,
object existingValue,
JsonSerializer serializer)
{
if (reader.Value == null)
{
return null;
}
var s = reader.Value.ToString();
DateTime result;
if (DateTime.TryParseExact(s,
Format,
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out result))
{
return result;
}
return DateTime.Now;
}
}
如果我尝试检查方法ReadJson,数据是正确解析的,毫秒是“125”。
如果我尝试保存我的数据库的这个值,我看到相同的日期,但是.127毫秒。
为什么?
如果我尝试检查方法ReadJson,数据是正确解析的,毫秒是“125”。
这告诉您问题不在于JSON转换。 因此,所有发布的代码都与问题无关。 您已经成功地将问题分成两部分,但是您调查了错误的分区。
SQL Server的datetime
数据类型具有有限的精度。 使用datetime2
。
如果我尝试保存我的数据库的这个值,我看到相同的日期,但是.127毫秒。
假设你是保存到一个SQL数据库的datetime
,这是精度就可以得到限制:
datetime值四舍五入为.000,.003或.007秒的增量,如下表所示。
如果您想要更高的精度,那么您应该使用不同的列类型:
使用time,date,datetime2和datetimeoffset数据类型进行新工作。 这些类型与SQL标准一致。 它们更便携。 time,datetime2和datetimeoffset提供更多的秒精度 。 datetimeoffset为全局部署的应用程序提供时区支持。
(从同一页面得到更多重视)。
datetime2
页面提供了有关此结构及其局限性的更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.