眼见为实:.NET类库中的DateTimeOffset用途何在
在 EnyimMemcachedCore(支持.NET Core的memached客户端)中实现 Microsoft.Extensions.Caching.Distributed.IDistributedCache 接口时,遇到了一个过期时间处理的问题。
在 IDistributedCache 中用到了 DistributedCacheEntryOptions ,其中有一个属性 AbsoluteExpiration 的类型是 DateTimeOffset 。而 EnyimMemcachedCore 计算过期时间用的是 DateTime,计算方法如下(示例代码):
DateTime expiresAt = DateTime.Now.AddHours(1); DateTime unixEpoch = new DateTime(1970, 1, 1); var totalSeconds = (uint)(expiresAt.ToUniversalTime() - unixEpoch).TotalSeconds;
上面的代码中,totalSeconds 的运行结果是 1474951193 。
那使用 DateTimeOffset 时该如何处理呢?
DateTimeOffset 表示的是时间偏移量,那它是基于哪个时间基准的偏移呢?从 DateTimeOffset 的注释中得知它是基于 UTC 时间(Coordinated Universal Time)。它和 DateTime 一样也有 Now 属性,于是有了下面的代码:
DateTimeOffset expiresAtOffset = DateTimeOffset.Now.AddHours(1);
那如何计算它相对于 1970-1-1 00:00:00 的总秒数呢?发现 DateTimeOffset 有个方法叫 ToUnixTimeSeconds() ,从名称看应该就是它吧。第1次使用它,需要验证一下,眼见为实:
totalSeconds = (uint)expiresAtOffset.ToUnixTimeSeconds();
totalSeconds 的运行结果也是是 1474951193 。
有了 DateTimeOffset ,计算过期时间更方便了,你也可以不用记住 Unix 时间戳的计算起始时间了。
眼见为实:.NET类库中的DateTimeOffset用途何在相关推荐
- Java中finalize方法用途何在?
1 package thinking.in.java.demo; 2 3 /* 4 * finalize的用途何在? 5 * 6 *本例的终止条件是L所有的Book对象在被当做垃圾回收前都应该被签入. ...
- .NET框架类库中的命名空间
.NET 框架类库是一个由 Microsoft .NET 框架 SDK 中包含的类.接口和值类型组成的库. 该库提供对系统功能的访问,并且被设计为 .NET 框架应用程序.组件和控件的生成基础. .N ...
- [召集] .NET Framework基本类库中的设计模式
活动背景 现在研究设计模式的人很多,研究.NET设计模式的也不在少数.但大家的研究都是靠自己YY一个应用场景,然后写一些"样例"代码实现之.这离实际应用太遥远了. Anders L ...
- VS2010下创建WEBSERVICE,第二天 ----你会在C#的类库中添加web service引用吗?
本文并不是什么高深的文章,只是VS2008应用中的一小部分,但小部分你不一定会,要不你试试: 本人对于分布式开发应用的并不多,这次正好有一个项目要应用web service,我的开发环境是vs2008 ...
- 在web项目中的类库中引用webservice 在部署后更改webservice路径的方法
在一次开发过程中发现这样的问题: 我引用外部的webservice连接并不是在solution里面的web层,而是在solution里面的类库中引用的,原本在web中引用自动生成的引用路径会在web. ...
- 在C#的类库中使用log4net
在C#的类库中使用log4net 1,在类库中添加对log4net的引用.并且在app.config(web.config)中添加如下代码: 添加的位置你懂的. <section name=& ...
- 你会在C#的类库中添加web service引用吗?
你会在C#的类库中添加web service引用吗? 本文并不是什么高深的文章,只是VS2008应用中的一小部分,但小部分你不一定会,要不你试试: 本人对于分布式开发应用的并不多,这次正好有一个项目要 ...
- dalvik Java类库中本地类
dalvik中Java类库有许多本地类(全本地方法) 当(Java/C++)调用(Java类库中)本地类的本地方法时,ResolveNativeMethod:查映射表-->本地类的本地函数集-- ...
- 在C#代码中应用Log4Net(五)将Log4Net正确地封装在自己的类库中并进行调用
前面的几篇文章已经比较完整地解释了怎么使用Log4Net,但是我们可能需要将Log4Net的日志类封装在自己的类库中,以便C/S或B/S程序进行调用.下面的示例程序简单地分为两层,一个是应用程序层We ...
最新文章
- qpushbutton 设置字体大小_怎样设置Qpushbutton 的大小
- Windows的设备驱动框架
- 【TypeScript】do...while 循环
- Matlab与C/C++混合编程接口及应用
- 工业用微型计算机(23)-汇编语言基本结构
- ubuntu mysql修改字符集后不能启动mysql_解决ubuntu下修改my.cnf设置字符集导致mysql无法启动...
- 数据库-linux安装mysql
- https://www.icourse163.org/learn/PKU-1002534001?tid=1003136008#/learn/quiz?id=1003986014
- Sagemath相关连接整理
- 登记车架号/VIN码用车架号识别
- Flutter调用摄像头录像及获取视频信息
- oracle中查找某一个时间段内的数据
- [乡土民间故事_徐苟三传奇]第廿三回_吃蒸肉财主受捉弄
- [高数][高昆轮][高等数学上][第一章-函数与极限]02.数列的极限
- 商用计算机使用温度,电脑一般的使用温度为?
- PostgreSQL变更表Owner
- MySQL 数据库之实现热备份
- Halting problem
- 空间三点定圆的解算过程
- compact php,php compact 通过变量创建数组