DateTime只保存两部分信息:Ticks和Kind
Ticks 一个Tick是100纳秒(1万Tick等于1毫秒)Ticks记录了从1/1/0001 12:00 AM到现在经过了多少100纳秒。
Kind Kind保存的是DateTimeKind枚举值,有Utc、Local和Unspecified 。
Utc意味着Tick计数表示协调世界时间的数量,其不会受到夏令时或者时区的影响。
Local表示本地时间的数量,会受到夏令时的影响。由于DateTime并不保存时区偏移,所以要获得真正的UTC时间,就会检查计算机当前的市区设置,那么ToUniversalTime和ToLocalTime方法都会进行这样的转换。
Unspecified,意味着我们不知道到底是本地时间还是UTC时间。所以这种情况只能表示年月日,时间无法精确表示。

DateTime除了存在这个问题,还会在进行比较的时候,其不会考虑Kind是UTC还是Local,从而导致错误。DateTime在进行字符串化的时候,对于某些标准格式也会出现问题(根源还是时区的问题),比如ToString("u")的时候,会直接把Local当作UTC来处理。

为了解决上述时区和转换的问题,DateTimeOffset应运而生。它只保存Ticks,不保存Kind,且Ticks总是相对于UTC的值。

DateTimeOffset DateTime的更多相关文章

  1. 第二节:比较DateTime和DateTimeOffset两种时间类型并介绍Quartz.Net中用到的几类时间形式(定点、四舍五入、倍数、递增)

    一. 时间的类型 1. 背景 这里为什么要介绍时间类型呢,明明是定时调度篇,原因是在定时任务中,任务什么时间开始执行,什么时间结束执行,要用到各种各样的时间模式,虽然这不能算是一个复杂的问题,但在正式 ...

  2. .NETFramework:DateTimeOffset

    ylbtech-.NETFramework:DateTimeOffset 表示一个时间点,通常相对于协调世界时(UTC)的日期和时间来表示. 1.程序集 mscorlib, Version=4.0.0 ...

  3. [深入浅出WP8.1(Runtime)]网络编程之HttpClient类

    12.2 网络编程之HttpClient类 除了可以使用HttpWebRequest类来实现HTTP网络请求之外,我们还可以使用HttpClient类来实现.对于基本的请求操作,HttpClient类 ...

  4. C# 数据类型与PostgreSQL 数据类型映射

    Npgsql 是基于ADO.NET 的PostgreSQL 数据驱动. Npgsql 官方 已经提供C# 数据类型与PostgreSQL数据类型的对应映射 地址: http://www.npgsql. ...

  5. ConcurrentDictionary和Dictionary

    http://stackoverflow.com/questions/6739193/is-the-concurrentdictionary-thread-safe-to-the-point-that ...

  6. CQRS学习——集成ASP.NET Identity[其五]

    [其实和Cqrs没啥关系] 缘由 其实没啥原因,只是觉得以前写了不知多少遍的用户登录复用性太差,实现的功能也不多. 依赖的Nuget包 简单登陆 就简单登陆而言,只需要实现如下接口/抽象类: Stor ...

  7. DAL与数据库类型的对应关系

    MSSQL Server类型 DbType类型 C#类型   MySql类型 DbType类型 C#类型 bit Boolean bool   bit(1) Boolean bool tinyint ...

  8. SQL SERVER 自动生成 MySQL 表结构及索引 的建表SQL

          SQL SERVER的表结构及索引转换为MySQL的表结构及索引,其实在很多第三方工具中有提供,比如navicat.sqlyog等,但是,在处理某些数据类型.默认值及索引转换的时候,总有些 ...

  9. 【译】使用Jwt身份认证保护 Asp.Net Core Web Api

    原文出自Rui Figueiredo的博客,原文链接<Secure a Web Api in ASP.NET Core> 摘要:这边文章阐述了如何使用 Json Web Token (Jw ...

随机推荐

  1. XenServer7.6命令行导出导入虚拟机(迁移)

    一:命令行方法导出虚拟机(先关闭虚拟机) 1.1:打印虚拟机列表 xe vm-list uuid ( RO) : 43dfac04-515e-7769-b2d2-444d4b7cb198 name-l ...

  2. java类的高级概念

  3. python 4

    一.列表相关操作 l = ['布偶猫', '小断腿', '大白'] # . append l.append('哎呀') print(l) # . insert l.insert(, '小猪佩琪') p ...

  4. Python全栈之路----函数----高阶函数

    变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一函数作为参数,这种函数就称之为高阶函数. 只需满足以下任意一个条件,即是高阶函数: 接收一个或多个函数作为输入 def func(x, ...

  5. 作用域&&闭包

    在了解闭包之前,先了解作用域一,作用域简单来说就是变量和函数可以访问的范围,在es5中变量作用域一般分为全局作用域和局部作用域,这个主要依据是全局变量还是局部变量 情景1: <script> ...

  6. Android SDK的下载与安装

    一.Android SDK简介 Android SDK(Software Development Kit,软件开发工具包)被软件开发工程师用于为特定的软件包.软件框架.硬件平台.操作系统等建立应用软件 ...

  7. 学习笔记TF017:自然语言处理、RNN、LSTM

    自然语言处理 (NLP)问题都是序列化的.前馈神经网络,在单次前馈中对到来数据处理,假定所有输入独立,模式丢失.循环神经网络(recurrent neural network,RNN)对时间显式建模神 ...

  8. C# 利用反射完成计算器可扩展功能

    一个主要的窗体程序,两个输入框,一个label using System; using System.Collections.Generic; using System.ComponentModel; ...

  9. 第四节《Git检出》

    使用过Git的朋友们都谁知道git reset可以达到重置效果,不知道的小伙伴们可以看下上一篇博客,重置命令的一个用途就是修改引用的游标指向,实际上在执行重置命令的时候没有使用任何参数对所要重置的分支 ...

  10. Dart 学习资料

    Dart 学习资料: 学习资料 网址 Dart 编程语言中文网 http://dart.goodev.org/ Dart 官方包仓库 https://pub.dartlang.org/ 你想了解的Da ...