『片段』C# DateTime 时间相减 和 时区的关系
2016-06-23 14:52
375 查看
本文只是基础代码片段,直接先写 结论: C# DateTime 时间相减 —— 和 时区无关,只和时间值有关。
运行结果:
测试代码:
于是 就有了 这样的问题 (如下问题 仅作思考):
> 最开始, 项目是 国内项目 —— 从不考虑时区, 统一用的 +8时间, 存入数据库的 也是 +8时间.
> 之后, 项目开始 跨国家 —— 国外用户 也能使用.
问:
> 如何才能 对现有改动最小 的前提下 —— 完善项目 对国际时间的支持呢 ?
(本文 不是重量级 技术 —— 底层小细节而已,耽误大家时间的话,在此表示歉意。)
运行结果:
测试代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Temp_20160623_时间时区 { class Program { static void Main(string[] args) { DateTime timeNow = DateTime.Now; //当前本地时间 (北京时间+8) DateTime timeUtcNow = DateTime.UtcNow; //世界协调时间 (格林威治+0) DateTime timeUtcNow2 = new DateTime( timeUtcNow.Year, timeUtcNow.Month, timeUtcNow.Day, timeUtcNow.Hour, timeUtcNow.Minute, timeUtcNow.Second, timeUtcNow.Millisecond, DateTimeKind.Local); //世界协调时间 (北京时间+0) —— 和 UTC时间 值一样 的 北京时间 Console.WriteLine("北京时间+8 :" + timeNow); Console.WriteLine("格林威治+0 :" + timeUtcNow); Console.WriteLine("北京时间+8 :" + timeUtcNow2); //timeNow 和 timeUtcNow 相差 8个时区 //问: 这两个时间相减 等于多少? TimeSpan timeSpan = timeNow - timeUtcNow; Console.WriteLine("({0} +8) - ({1} +0) = {2}", timeNow, timeUtcNow, timeSpan.TotalHours.ToString("F6")); TimeSpan timeSpan2 = timeNow - timeUtcNow2; Console.WriteLine("({0} +8) - ({1} +8) = {2}", timeNow, timeUtcNow2, timeSpan2.TotalHours.ToString("F6")); } } }
于是 就有了 这样的问题 (如下问题 仅作思考):
> 最开始, 项目是 国内项目 —— 从不考虑时区, 统一用的 +8时间, 存入数据库的 也是 +8时间.
> 之后, 项目开始 跨国家 —— 国外用户 也能使用.
问:
> 如何才能 对现有改动最小 的前提下 —— 完善项目 对国际时间的支持呢 ?
(本文 不是重量级 技术 —— 底层小细节而已,耽误大家时间的话,在此表示歉意。)
相关文章推荐
- C# 几种数据类型转换方式
- 过滤DataTable数据的Select()方法
- C# DataTable常用方法总结
- C#使用二叉树算法设计一个无限分级的树表
- 11 在C#中写文件
- C#中picturebox上的Label如何实现透明
- 浅谈如何在C#Winform程序中正确使用登录窗体
- C# 其他
- C# textbox控件应用
- C#/WPF 计算字串的真实长度,调整控件的宽度
- C# list 去重
- C# list 筛选FindAll,根据参数过滤
- C#项目中常用到的设计模式
- C# 静态类 考考你
- C#ArrayList
- 【C#】第3章补充(二)如何将图形作为对象
- C#中System.Func<>与System.Action<>的区别
- C#的标准容器类
- 在C#项目中如何添加“Web引用”?
- C#问题