2018
/
3
/
21
06
:
00
:
00
1521612000
格林威治时间UTC
DateTime.Parse(start_time_str).ToLocalTime()
2018
/
3
/
21
14
:
00
:
00
1521612000
东八区时间EST
DateTime.SpecifyKind(DateTime.Parse(start_time_str), DateTimeKind.Local)
2018
/
3
/
21
06
:
00
:
00
1521583200
东八区时间EST
转载于:https://www.cnblogs.com/sunnyroot/p/10115107.html
string start_time_str = "2018-03-21 06:00:00";DateTime.Parse(start_time_str)2018/3/21 06:00:00 1521612000 格林威治时间UTCDateTime.Parse(start_time_str).ToLocalTime()2018/3/21 14:00:00 15216120...
日期和
时间
,在我们开发中非常重要。
DateTime
在
C#
中,专门用来表达和处理日期和
时间
。
本文算是多年使用
DateTime
的一个总结,包括
DateTime
对象的整体应用,以及如何处理不同的区域、
时区
、格式等内容。
一、什么是
DateTime
跟我们想的不一样,
DateTime
不是一个类(class),而是一个结构(struct),它存在于System命名空间下,在Dotnet Core中,处于System.Runtime.dll中。
看一下
DateTime
的定义:
public struct
DateTime
: IComparable, IComparable<
DateTime
>, IC
指地球上的一块区域使用的同一
时间
定义,以经度划分,每个
时区
横跨15经度,总共24个
时区
,东西各12个
时区
,北京
时间
是东八区。
关于
时间
戳
指格林威治
时间
1970年01月01日00时00分00秒(北京
时间
1970年01月01日08时00分00秒)起至现在的总秒数。
时间
戳和
时区
没有关系。
时间
戳在哪个
时区
都是一样的,它只是一个计数。...
2.使用场景
例如:mysql数据库中的
datetime
字段没有
时区
概念 ,所以可存
DateTime
Offset且
时区
偏移量为0的
时间
(相当于存UTC
时间
),取出来按当地
时区
还原即可
3.常用的
DateTime
Offset 的构造
第一种:new
DateTime
Offset(2008, 6, 18, 7, 0, 0, new TimeSpan(-5, 0, 0));
第二种:
DateTime
b
C#
中可以通过
DateTime
的Kind属性
指定
DateTime
的
时区
DateTime
Kind有3个枚举值:
Unspecified:未
指定
为UTC
时间
或本地
时间
Utc: UTC
时间
Local: 本地
时间
var date1 = new
DateTime
(2018, 1, 2, 3, 4, 5);
Console.WriteLine("{0}\t{1:o}\t{2...
Console.WriteLine($"本地当前
时间
:{
DateTime
.Now}");
Console.WriteLine($"UTC当前
时间
:{
DateTime
.UtcNow}");
Console.WriteLine($"本地当前日期
时区
:{
DateTime
.Now.ToString("zzzz")}");
Console.Wr
获取当地
时间
:
DateTime
dt = TimeZoneInfo.ConvertTimeToUtc(
DateTime
.Now, TimeZoneInfo.Local);
DateTime
dt1 = TimeZoneInfo.ConvertTimeFromUtc(dt, TimeZoneInfo.FindSystemTimeZoneById("Romance Standard Time"));//参数对应国家或者
时区
***对于有夏令时冬令时的区域,程序会自动调整**
如果系统不考虑全球化的话,那么我们不用考虑
时区
的问题,因为我们可以认为中国境内的计算机全部用的是北京
时间
。
1.
时区
的来源和划分
地球自转一圈是360度,共24小时,所以1小时15度,即:15度就是1个
时区
。
国际定义了本初子午线(0度经线)的位置在英国伦敦格林尼治天文台,自然世界时(UTC)也是指的格林尼治天文台(GMT)那里的
时间
。
认为北京处在东经120度线上,也就是东八区上,所以北京相比UTC
时间
有8个小时的时差。
由于地球自西向东转,所以北京比格林尼治最先接触阳光,自然就认为北京的
在
C#
中获取东八区
时区
的方法是通过使用`TimeZoneInfo`类来实现的。你可以使用`TimeZoneInfo.FindSystemTimeZoneById`方法来获取东八区的
时区
,然后使用`TimeZoneInfo.ConvertTimeFromUtc`方法将UTC
时间
转换为东八区的本地
时间
。
下面是一段示例代码:
DateTime
utcTime =
DateTime
.UtcNow;
TimeZoneInfo easternZone = TimeZoneInfo.FindSystemTimeZoneById("China Standard Time");
DateTime
easternTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, easternZone);
在这个例子中,我们首先获取了当前的UTC
时间
,然后通过`FindSystemTimeZoneById`方法找到了东八区的
时区
信息,接着使用`ConvertTimeFromUtc`方法将UTC
时间
转换为东八区的本地
时间
。
请注意,"China Standard Time"是东八区的
时区
标识符,在不同的操作系统中可能会有所不同。你可以根据你的操作系统选择正确的
时区
标识符。
使用上述代码,你就可以在
C#
中获取到东八区的本地
时间
了。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [获取当前
时间
的东八区
时间
](https://blog.csdn.net/Gzigithub/article/details/125620559)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]