如何表示各个时区的时间DateTime.ToString

如题所述

在.Net Framework 1.1平台下,从个人体验谈谈如何处理日期时间格式。
1. 默认情况下,DateTime.Now.ToString()的输出与Control Panel中Date/Time的设置格式相关。
For example, 当Regional Options中Time设置:
Time format: h:mm:ss tt
AM symbol: 上午
PM symbol:下午

Console.WriteLine(DateTime.Now.ToString());
输出结果:12/6/2004 2:37:37 下午

DateTime.Parse("12/6/2004 2:37:37 下午")
OK

// 将日期和时间的指定 String 表示形式转换成其等效的 SqlDateTime
SqlDateTime.Parse("12/6/2004 2:37:37 下午")
Exception:String was not recognized as a valid DateTime.

SqlDateTime.Parse("12/6/2004 2:37:37 PM")
OK

2. 通过DateTime.ToString(string format)方法,使用指定格式format将此实例的值转换成其等效的字符串表示。
DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss")
输出结果:12/06/2004 14:56:37
此时,DateTime的输出格式由format参数控制,与Regional Options中的Date/Time的设置无关。不过,如果项目中有很多地方需要进行DateTime日期时间格式控制,这样写起来就比较麻烦,虽然可以通过常数const进行控制。

3. 为当前线程的区域性创建 DateTimeFormatInfo。
// Sets the CurrentCulture property to U.S. English.
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US", false);

Console.WriteLine(DateTime.Now.ToString());
输出结果:12/6/2004 2:37:37 PM

若要为特定区域性创建 DateTimeFormatInfo,请为该区域性创建 CultureInfo 并检索 CultureInfo.DateTimeFormat 属性。
// Creates and initializes a DateTimeFormatInfo associated with the en-US culture.
DateTimeFormatInfo myDTFI = new CultureInfo( "en-US", false).DateTimeFormat;

DateTimeFormatInfo 的实例可以针对特定区域性或固定区域性创建,但不能针对非特定区域性创建。非特定区域性不提供显示正确日期格式所需的足够信息。如果试图使用非特定区域性创建 DateTimeFormatInfo 的实例,将发生异常
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2021-02-10
找了半天资料,才找到原因
This profile defines two ways of handling time zone offsets:
有两种方式处理时区的时差

Times are expressed in UTC (Coordinated Universal Time), with a special UTC designator ("Z").
如果是UTC时间的话,后面需要加Z表示。1994-11-05T13:15:30Z

Times are expressed in local time, together with a time zone offset in hours and minutes.
A time zone offset of "+hh:mm" indicates that the date/time uses a local time zone which is "hh" hours and "mm" minutes ahead of UTC.
A time zone offset of "-hh:mm" indicates that the date/time uses a local time zone which is "hh" hours and "mm" minutes behind UTC.
其它的时间,在年月日时分秒后面,通过+-时差来表示。
如果时间比UTC时间快的话,就用+hh:mm表示,后面的时间表示相差的时间。
如果时间比UTC时间慢的话,就用-hh:mm表示,后面的时间表示相差的时间。

+hh:mm和-hh:mm实际上表示的是时区,+08:00表示的是东八区,-05:00表示的是西五区

有两种方式来说明时间
1994-11-05T08:15:30-05:00 corresponds to November 5, 1994, 8:15:30 am, US Eastern Standard Time.
//时间是1994-11-05 08:15:30 表示的是西五区的时间,比UTC时间慢5个小时 换算成UTC时间的话,需要加上5个小时,就是1994-11-05 13:15:30

1994-11-05T16:15:30+08:00 表示的是东八区的时间,比UTC时间快8个小时 换算成UTC时间的话,需要减去8个小时,就是1994-11-05 13:15:30

1994-11-05T13:15:30Z corresponds to the same instant.//很明显是UTC时间本回答被网友采纳

如何表示各个时区的时间DateTime.ToString
DateTime.Parse("12\/6\/2004 2:37:37 下午")OK \/\/ 将日期和时间的指定 String 表示形式转换成其等效的 SqlDateTime SqlDateTime.Parse("12\/6\/2004 2:37:37 下午")Exception:String was not recognized as a valid DateTime.SqlDateTime.Parse("12\/6\/2004 2:37:37 PM")OK 2. 通过DateTime....

如何用mysql输出日期时间
datetime包含毫秒,要格式化输出,用fffDateTime t = DateTime.Now;Console.WriteLine(t.ToString("yyyy-MM-dd hh:mm:ss fff"));注:mysql里面的datetime类型的精确度是可以到1\/ 10 ^ 6 秒的,某些客户端(如navicat for mysql)的显示经常只能看到精确到秒,其实是设计表的时候的配置问题。

DateTime.UtcNow.ToString() 和DateTime.Now.ToString()输出的字...
DateTime.UtcNow.ToString()输出的是0时区的事件,DateTime.Now.ToString()输出的是当前时区的时间,我们中国使用的是东八区的时间,所以差8个小时。

DateTime.Now 和DateTime.UtcNow的区别
1、DateTime.Now:DateTime.Now获取的是电脑上的当前时间。2、DateTime.UtcNow:DateTime.UtcNow获取的是世界标准时区的当前时间。二、电脑配置不同 1、DateTime.Now:DateTime.Now与电脑配置有关系,随电脑配置时间不同,而改变。2、DateTime.UtcNow:DateTime.UtcNow与电脑配置无任何关系。三、时区不同 1...

谁能举例讲一下C#的ToString()
DateTime.Now.ToString("yyyy\/MM\/dd hh:mm:ss")6.只显示年月DataBinder.Eval(Container.DataItem,"starttime","{0:yyyy-M}")7.显示时间所有部分,包括:年月日时分秒DataFormatString='{0:yyyy-MM-dd HH24:mm:ss}'>用DateTime.ToString(string format)输出不同格式的日期DateTime.ToString() 函数有四个重载...

时间:time和datetime
在编程世界中,Unix纪元是指1970年1月1日0点,即协调世界时间(UTC)。我们的时区为东8区,即UTC+8。在处理时间时,Python 提供了两个重要的模块:time 和 datetime。datetime 模块提供了一种表示特定时刻的方式。下面我们将通过多个步骤来了解如何操作 datetime 对象。初始化一个 datetime 对象通常涉及将...

datetime.now和datetime.utcnow的区别
1. 获取时间不同 `datetime.now` 获取的是本地时间。`datetime.utcnow` 获取的是协调世界时。详细解释:本地时间与协调世界时 在Python的datetime模块中,`datetime.now`函数返回当前本地时间,即考虑了时区因素的时间。这意味着返回的时间会根据用户所在的地理位置和时区有所不同。而`datetime.utcnow`...

数据库时间格式的转换
DateTime.ToString("yyyy-MM-DD")需要用DateTime的时候在把STRING换回DateTime === Asp.net日期字符串格式化显示--DateTime.ToString()用法详解 我们经常会遇到对时间进行转换,达到不同的显示效果,默认格式为:2006-6-6 14:33:34 如果要换成成200606,06-2006,2006-6-6或更多的格式该怎么办呢?这里...

时区的坑,不想再踩了
GMT+8 表示东8区,中国就是使用这个时区,而 GMT-8 表示西8区,如果格林尼治天文台的本地时间是2022-03-19的0点,那么 GMT+8 地区的本地时间就是2022-03-19的8点,而 GMT-8 的本地时间就是往前8小时,即2022-03-18的16点。注意,上面的各地区本地时间的表述虽然不同,但它们实际是同一个...

C# 关于DateTime类型 精确到毫秒
DateTime占用8个字节,存储的是你直接输入并保持原样的时间,不考虑时区,时间范围跨度非常大。而Timestamp则更为节省空间,使用4个字节存储,以UTC时间戳的形式,即毫秒数,存储和检索时会进行时区转换。其时间范围从1970年到2038年,由于存储机制,可能在某些特定情况下无法展示超过这个范围的时间。

相似回答