Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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#_Wpf_Datetime_Textbox_Timezone - Fatal编程技术网

获取时区偏移并显示C#

获取时区偏移并显示C#,c#,wpf,datetime,textbox,timezone,C#,Wpf,Datetime,Textbox,Timezone,我需要得到我的程序正在运行的机器的当前时区偏移量,并将其显示在文本框或标签中 这是我的密码 var offset = TimeZoneInfo.Local.GetUtcOffset(DateTime.UtcNow); 您为获取偏移量而发布的代码是正确的: var offset = TimeZoneInfo.Local.GetUtcOffset(DateTime.UtcNow); 同样有效的是: var offset = DateTimeOffset.Now.Offset; 其中任何一个的结

我需要得到我的程序正在运行的机器的当前时区偏移量,并将其显示在文本框或标签中

这是我的密码

var offset = TimeZoneInfo.Local.GetUtcOffset(DateTime.UtcNow);

您为获取偏移量而发布的代码是正确的:

var offset = TimeZoneInfo.Local.GetUtcOffset(DateTime.UtcNow);
同样有效的是:

var offset = DateTimeOffset.Now.Offset;
其中任何一个的结果都是当前本地偏移量,表示为
TimeSpan
。您唯一缺少的部分是如何将其格式化为显示的
字符串。虽然有几个选项,但我建议使用一个值,例如
“+05:30”
“-08:00”


您只需执行
var x=DateTimeOffset.Now.Offset这是你的问题吗?它需要是UTC偏移量,这样它也可以得到DST。当
var x=DateTimeOffset.Now.Offset时,您的代码还会删除一个eror
无法将类型“System.TimeSpan”隐式转换为“string”
;textBox1.Text=x许多偏移不是以整小时为单位的。例如,对于印度,这将返回
“-5.5”
。@MattJohnson TotalHours返回@DavidCarrigan-Yes,然后在double上调用ToString。你的观点?@MattJohnson抱歉,看来我可能误解了你的评论。我以为你是在暗示这只处理整个小时,但期望的结果是包括十分之一。这是一个“漫长的部署”之夜:-/再次道歉。
var offset = DateTimeOffset.Now.Offset;
string sign = offset < TimeSpan.Zero ? "-" : "+";
string output = sign + offset.ToString(@"hh\:mm");
Instant now = SystemClock.Instance.Now;
DateTimeZone tz = DateTimeZoneProviders.Tzdb.GetSystemDefault();
ZonedDateTime local = now.InZone(tz);
Offset offset = local.Offset;
string output = offset.ToString("m", CultureInfo.InvariantCulture);