眼见为实:.NET类库中的DateTimeOffset用途何在
在 EnyimMemcachedCore(支持.NET Core的memached客户端)中实现 Microsoft.Extensions.Caching.Distributed.IDistributedCache 接口时,遇到了一个过期时间处理的问题。
在 IDistributedCache 中用到了 DistributedCacheEntryOptions ,其中有一个属性 AbsoluteExpiration 的类型是 DateTimeOffset 。而 EnyimMemcachedCore 计算过期时间用的是 DateTime,计算方法如下(示例代码):
DateTime expiresAt = DateTime.Now.AddHours();
DateTime unixEpoch = new DateTime(, , );
var totalSeconds = (uint)(expiresAt.ToUniversalTime() - unixEpoch).TotalSeconds;
上面的代码中,totalSeconds 的运行结果是 1474951193 。
那使用 DateTimeOffset 时该如何处理呢?
DateTimeOffset 表示的是时间偏移量,那它是基于哪个时间基准的偏移呢?从 DateTimeOffset 的注释中得知它是基于 UTC 时间(Coordinated Universal Time)。它和 DateTime 一样也有 Now 属性,于是有了下面的代码:
DateTimeOffset expiresAtOffset = DateTimeOffset.Now.AddHours();
那如何计算它相对于 1970-1-1 00:00:00 的总秒数呢?发现 DateTimeOffset 有个方法叫 ToUnixTimeSeconds() ,从名称看应该就是它吧。第1次使用它,需要验证一下,眼见为实:
totalSeconds = (uint)expiresAtOffset.ToUnixTimeSeconds();
totalSeconds 的运行结果也是是 1474951193 。
有了 DateTimeOffset ,计算过期时间更方便了,你也可以不用记住 Unix 时间戳的计算起始时间了。
眼见为实:.NET类库中的DateTimeOffset用途何在的更多相关文章
- Java中finalize方法用途何在?
package thinking.in.java.demo; /* * finalize的用途何在? * *本例的终止条件是L所有的Book对象在被当做垃圾回收前都应该被签入.但是在main方法中 * ...
- 谈谈Java常用类库中的设计模式 - Part Ⅰ
背景 最近一口气看完了Joshua Bloch大神的Effective Java(下文简称EJ).书中以tips的形式罗列了Java开发中的最佳实践,每个tip都将其意图和要点压缩在了标题里,这种做法 ...
- [CodeIgniter] 在自定义类库中使用config配置项
通常情况下,Controller 中的方法可以通过 $this->config->item('item_name') 的方式来加载配置文件中的值 但是如果不继承 CI_Controller ...
- 在C#代码中应用Log4Net(五)将Log4Net正确地封装在自己的类库中并进行调用
前面的几篇文章已经比较完整地解释了怎么使用Log4Net,但是我们可能需要将Log4Net的日志类封装在自己的类库中,以便C/S或B/S程序进行调用.下面的示例程序简单地分为两层,一个是应用程序层We ...
- 在类库中引用WebService的注意事件
在VS中 添加引用服务之后 会在 类库中生成一个app.config的文件 把里面的配置节点 添加到web项目中的 web.config中 即可.不然会报 错误
- Javacard 解释器怎样在API类库中找到源文件调用的类、方法或者静态域?
申明:本篇非本人原创,是在阅读各种论文文献之后,对论文文献的一种梳理. 主要参考文献为: ------------------------------------------------------- ...
- WCF服务在类库中的引用
在类库中引用了WCF服务,悲剧降临了,追踪日志看到下边一串: --------------------------------------------------------------------- ...
- MVC如何在单独的类库中添加区域
今天要做一个将区域放到单独的类库中的程序,其实就是多加几个引用的问题,但是我比较喜欢这种设计结构,因为这样的话可以把单独的应用逻辑放在单独的类库中处理,项目看起来更清晰分明,所以写了这个随笔. 首先创 ...
- 你会在C#的类库中添加web service引用吗?
本文并不是什么高深的文章,只是VS2008应用中的一小部分,但小部分你不一定会,要不你试试: 本人对于分布式开发应用的并不多,这次正好有一个项目要应用web service,我的开发环境是vs2008 ...
随机推荐
- PHP 使用分页方法修改多数据字段
这个标题听起来很别扭,需求是这样的.mysql中的customer表有5000条数据.现在要给customer表添加一个order_num 字段,客户每下单一次就update这个字段+1. 是的,新增 ...
- Python 实现Windows开机运行某软件
开机运行:随系统启动的应用程序,当系统启动之后会自动加载的应用 在注册表中添加启动项便可实现开机启动. 代码如下: # -*- coding:utf-8 -*- import win32api imp ...
- 【Java EE 学习 72 下】【数据采集系统第四天】【移动/复制页分析】【使用串行化技术实现深度复制】
一.移动.复制页的逻辑实现 移动.复制页的功能是在设计调查页面的时候需要实现的功能.规则是如果在同一个调查中的话就是移动,如果是在不同调查中的就是复制. 无论是移动还是复制,都需要注意一个问题,那就是 ...
- C# 取整函数
向上取整math.ceiling(1) = 1math.ceiling(1.1) = 2math.ceiling(1.5) = 2向下取整math.float(1) = 1math.float(1.1 ...
- notepad++快捷键
notepad++现在是我最常用的文本编辑工具,其中使用的列模式编辑,也是很好使用的. 基本的快捷键: Ctrl-C,Ctrl-X,Ctrl-V,Ctrl-Y,Ctrl-A,Ctrl-F,Ctrl-S ...
- OpenCV特征点检测------ORB特征
OpenCV特征点检测------ORB特征 ORB是是ORiented Brief的简称.ORB的描述在下面文章中: Ethan Rublee and Vincent Rabaud and Kurt ...
- SqlLite 基本操作
1.数据类型 ● SQLite将数据划分为以下⼏几种存储类型: ● integer : 整型值 ● real : 浮点值 ● text : ⽂文本字符串 ● blob : ⼆二进制数据(⽐比 ...
- 亚马逊S3下载上传文件
引用网址: http://www.jxtobo.com/27697.html 下载 CloudBerry Explorer http://www.cloudberrylab.com/download- ...
- ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
有时候,当我们使用"mysql"."mysqladmin"."mysqldump"等命令管理数据库时,服务器抛出类似如下错误: 一.错误现场 ...
- C# 解析JSON的几种办法
欲成为海洋大师,必知晓海中每一滴水的真名. 刚开始只是想找一个转换JSON数组的方法,结果在MSDN翻到一大把. 搜索过程中免不了碰到一大堆名词:WCF => DataContract => ...