天天看点

win10 uwp unix timestamp 时间戳 转 DateTime

有时候需要把网络的 unix timestamp 转为 C# 的 DateTime ,在 UWP 可以如何转换?

转换函数可以使用下面的代码

如何从 DateTime 转 unix timestamp ,请用下面代码

如果就是这么简单代码,我就不会写博客专门来说。

我遇到一个问题,我拿到的是 json ,里面的时间是 unix timestamp ,我需要把 long 的时间转换 DateTime ,但是我不喜欢在使用的时候再经过转换,能够在写的时候,把所有的 unix timestamp 自动转换为 DateTime?

用代码来说,过程就是:

json 转换得到对象

对象进行转换,但是这时发现需要重新写一个类,这个类和原来的类只有类型不一样,其他都一样。看起来代码不优雅。

看完了上面的问题,是不是想到,json有一个优雅方法可以做到,是的,他可以自己写转换器。

我找到一个简单方法,可以从 Json 转换过程,直接把 DateTime 和 unix timestamp 相互转换,方法很简单。

下面来讲下如何解决。下面需要用到了 JsonConverter 的高级用法。首先需要使用 Nuget 下载 json 的库,当然搜 json 下载第一个就好。

然后创建一个类,用于类型转换,类型转换的意思就是从输入一个类型转换为输出的一个类型

可以看到,创建的类型必须重新三个函数

很容易知道,<code>WriteJson</code> 就是从一个存在的类转换为 json ,遇到类型需要做什么转换。 <code>ReadJson</code> 从一个json转换为类的时候,遇到json需要如何转换。 <code>CanConvert</code>当前的输入是否支持转换。

当然这几个函数是对于属性的,所以读取一个值就好了。

一开始需要把 unix timestamp 转换为 DateTime ,所以就是从 json 的字符串转属性。

写的代码就是 <code>ReadJson</code> ,于是开始写这个函数

这样就是转换的代码,看起来很简单。

读取 一个值,把他转 long ,然后使用上面的函数转换 DateTime ,为什么这里使用的是 long.Parse ,因为保证输入的json是对的,如果json不对,那么直接告诉错误才是好的做法。

和读函数反过来,需要把 属性转json的字符串,可以从参数看到,需要转换的值是 value ,这里使用强转,因为知道了他的类型。writer 可以直接写入 很多类型

看起来大概就写好了,但是最后一个函数只需要返回 true 就好,暂时不需要做什么。

开始写一个例子进行测试。

测试之前,我先把上面的转换类所有代码写出来

测试是写一个类,把他进行转换json,然后使用json转类,看得到结果是否一样。

转换 得到json 为 <code>{"created_utc":1498037127}</code>

因为我使用的是 DateTime.Now ,所以如果大家使用这个类,得到的结果可能和我得到的不一样。

可以看到从json转换结果和创建的类的属性一样,所以这个方法可以拿来使用。

<a href="https://stackoverflow.com/questions/44643498/convert-unix-timestamp-to-normal-date-uwp/44650513#44650513">https://stackoverflow.com/questions/44643498/convert-unix-timestamp-to-normal-date-uwp/44650513#44650513</a>

win10 uwp unix timestamp 时间戳 转 DateTime