Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何设置日期时间值的时区(或种类)?_C#_.net_Datetime_Timezone - Fatal编程技术网

C# 如何设置日期时间值的时区(或种类)?

C# 如何设置日期时间值的时区(或种类)?,c#,.net,datetime,timezone,C#,.net,Datetime,Timezone,我的意思是将严格的UTC时间存储在DateTime变量中,并以ISO8601格式输出 最后我使用了.ToString(“yyyy-MM-ddTHH:MM:sszzz”),它发现时区是UTC+01:00 我尝试使用.Kind=DateTimeKind.Utc,但它说Kind属性没有setter 如何明确指定时间以UTC为单位?Kind属性是如何设置的?当DateTime.Kind属性没有设置器时,静态方法使用指定的Kind值创建DateTime实例 另外,也有一些采用DateTimeKind参数的

我的意思是将严格的UTC时间存储在DateTime变量中,并以ISO8601格式输出

最后我使用了.ToString(“yyyy-MM-ddTHH:MM:sszzz”),它发现时区是UTC+01:00

我尝试使用.Kind=DateTimeKind.Utc,但它说Kind属性没有setter


如何明确指定时间以UTC为单位?Kind属性是如何设置的?

当DateTime.Kind属性没有设置器时,静态方法使用指定的Kind值创建DateTime实例


另外,也有一些采用DateTimeKind参数的方法

如果您想利用本地机器时区,可以使用
myDateTime.ToUniversalTime()
从本地时间获取UTC时间,或者使用
myDateTime.ToLocalTime()
将UTC时间转换为本地机器的时间

// convert UTC time from the database to the machine's time
DateTime databaseUtcTime = new DateTime(2011,6,5,10,15,00);
var localTime = databaseUtcTime.ToLocalTime();

// convert local time to UTC for database save
var databaseUtcTime = localTime.ToUniversalTime();
如果需要将时间从/转换到其他时区,可以使用
TimeZoneInfo.ConvertTime()
TimeZoneInfo.ConvertTimeFromUtc()


您也可以尝试一下,它很容易实现

TimeZone time2 = TimeZone.CurrentTimeZone;
DateTime test = time2.ToUniversalTime(DateTime.Now);
var singapore = TimeZoneInfo.FindSystemTimeZoneById("Singapore Standard Time");
var singaporetime = TimeZoneInfo.ConvertTimeFromUtc(test, singapore);
更改要更改的标准时间的文本


使用C的
时区
功能来实现。

日期时间类仅包含本地、未指定和UTC。我可能不可能使用一个特定的时区。@hardywang如果您只需要指定一个时间和UTC的偏移量,那么您可以使用。如果您真的需要确定一个特定的时区,那么您需要将DateTime与。请参阅以进行讨论。
TimeZone time2 = TimeZone.CurrentTimeZone;
DateTime test = time2.ToUniversalTime(DateTime.Now);
var singapore = TimeZoneInfo.FindSystemTimeZoneById("Singapore Standard Time");
var singaporetime = TimeZoneInfo.ConvertTimeFromUtc(test, singapore);