Tag: timezone

TimeZoneInfo从时区分钟偏移

从JavaScript我已经使用Date对象上的getTimezoneOffset方法向控制器传递了用户的客户端日期时间偏离UTC的分钟数。 现在我在服务器端有这个信息,我想从它创建一个TimeZoneInfo。 这怎么可能? 如果这不可能,那么如何使用分钟偏移将服务器端的UTC日期转换为客户端的时区?

在我的数据库中存储时区信息的最佳方法是什么?

我有一个asp.net-mvc网站,我接手了一个页面页面,人们输入信息和时间(包括当地时区)。 数据库持续开始时间,结束时间和时区,因为它对我来说感觉有点不稳定。 这是获取列表的代码: static private IEnumerable GetTimeZones(string selected) { var timeZoneNames = TimeZoneInfo.GetSystemTimeZones() .Where(tz => tz.DisplayName.Contains(“London”) || tz.DisplayName.Contains(“Hong Kong”) || tz.DisplayName.Contains(“Mumbai”) || tz.DisplayName.Contains(“Eastern Time”)) .ConvertAll(tz => tz.DisplayName).ToList(); var items = new List(); foreach (var item in timeZoneNames) { var slItem = new SelectListItem(); slItem.Text = item; slItem.Value = item; slItem.Selected = item == selected; items.Add(slItem); […]

C#:确保DateTime.Now返回GMT + 1次

我正在使用DateTime.Now根据今天的日期显示某些内容,当在本地工作(马耳他,欧洲)时,时间显示正确(显然是因为时区)但当我上传到我的托管服务器(美国)时,当然DateTime.Now不代表正确的时区。 因此,在我的代码中, 如何将DateTime.Now转换为从GMT + 1时区正确返回时间 ?

TimeZoneInfo.FindSystemTimeZoneById()在Unity应用程序中抛出exception

如果我在C#控制台应用程序中执行此代码,它可以正常工作。 TimeZoneInfo easternZone = TimeZoneInfo.FindSystemTimeZoneById(“Eastern Standard Time”); Console.WriteLine(easternZone.DisplayName); 但是,当我在Unity应用程序中使用相同的方法时,会抛出exception: System.TimeZoneNotFoundException: Exception of type ‘System.TimeZoneNotFoundException’ was thrown. at System.TimeZoneInfo.FindSystemTimeZoneByFileName (System.String id, System.String filepath) [0x00000] in :0 at System.TimeZoneInfo.FindSystemTimeZoneById (System.String id) [0x00000] in :0 … 我注意到一个奇怪的事情是,当MSDN文档明确表示从注册表中检索信息时,会在名为“FindSystemTimeZoneByFileName”的方法中抛出exception。

使用JSON.NET解析格式为Date(epochTime-offset)的json日期

我在C#中使用Json.net 7.0.1来使用rest API。 问题在于API在其JSON响应中使用的日期格式。 它看起来像这样: /Date(1445301615000-0700)/ 这意味着代表2015-10-19 17:40:15的UTC时间 如果将1445301615000插入纪元时间转换器 ,您会看到它是2015-10- 20 00:40:15。 所以比UTC提前7个小时。 然后他们包括-0700可能是为了抵消回到UTC。 所以,为了给我一个UTC时间,他们发给我UTC + 7-0700。 为什么他们这样做我不知道,但我不能改变它。 我的问题是,如何最好地使Json.NET解析该日期字符串并提出2015-10-19 17:40:15 UTC的DateTime。 我可以编写一个自定义JsonConverter来劫持该值并手动操作它,但我想知道是否有更原生的方法。 我已经尝试将JsonSerializerSettings DateTimeZoneHandling属性更改JsonSerializerSettings DateTimeZoneHandling所有不同的值。 将它设置为Utc只是忽略时区偏移,产生2015-10-20 00:40:15 。 将其设置为Local,Unspecified或2015-10-19 20:40:15都会产生2015-10-19 20:40:15 ,我认为这是因为我的本地时区是UTC-4,所以它试图将该调整应用于2015年的主要日期值-10-20 00:40 我还考虑使用DateFormatString属性来表示预期的日期字符串格式。 但我找不到正确的格式字符串字符来表示这个epochtime-offset格式。 这是一个简化的例子: Person person; string json = @”{ ‘Name’: ‘John’, ‘LastSeen’:’/Date(1445301615000-0700)/’ }”; // 1445301615000 = 2015-10-20 00:40:15 person = JsonConvert.DeserializeObject(json); Console.WriteLine(person.LastSeen); […]

如何使用不同的时区Nodatime将UTC日期和时间转换为当地时间

我正在使用从外部服务器通过互联网获取日期时间的function。 这是我用来获取日期和时间的function,而不依赖于用户的PC日期时间设置。 using NodaTime; using NodaTime.Text; using System.IO; using System.Globalization; public static DateTime GetFastestNISTDate() { var result = DateTime.MinValue; DateTime utcDateTime = DateTime.MinValue; // Initialize the list of NIST time servers // http://tf.nist.gov/tf-cgi/servers.cgi string[] servers = new string[] { “nist1-ny.ustiming.org”, “nist1-nj.ustiming.org”, “nist1-pa.ustiming.org”, “time-a.nist.gov”, “time-b.nist.gov”, “nist1.aol-va.symmetricom.com”, “nist1.columbiacountyga.gov”, “nist1-chi.ustiming.org”, “nist.expertsmi.com”, “nist.netservicesgroup.com” }; // Try 5 servers in […]

解析包含TimeZone信息的字符串DateTime

我试图将字符串值转换为日期时间值,但我收到System.FormatException错误。 这是因为时区信息是日期字符串的一部分。 有没有能够处理这种转换的方法? string date = “Wed, 04 Jan 2012 20:18:00 EST”; DateTime dt = Convert.ToDateTime(date); Console.WriteLine(dt.ToString());

如何在时区(UTC到EDT)之间转换时间?

我需要有一个共同的function来将UTC时间转换为EDT。 我在印度有一台服务器。 其中的应用程序需要将EDT时间用于所有时间目的。 我使用的是.NET 3.5。 我在其他论坛上发现了这个。 DateTime eastern = TimeZoneInfo.ConvertTimeBySystemTimeZoneId( DateTime.UtcNow, “Eastern Standard Time”); 当我尝试“Easten Daylight Time”时,我收到了一个错误。 “在本地计算机上找不到时区ID’东部夏令时’”。 请帮助解决此问题或任何其他解决方案。

DateTime.ParseExact,忽略时区

如果我有一个日期,如2011-05-05T11:35:47.743-04:00 当我以编程方式执行DateTime.ParseExact时,如何忽略时区(-04:00)?

如何使用正确的时区将Long类型的datetime转换为DateTime

例如1297380023295应该是2010/2/11 9 AM我现在使用这个代码 long dateNumber = num; long beginTicks = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks; DateTime dateValue = new DateTime(beginTicks + dateNumber * 10000); return dateValue; 该function的结果是凌晨1点,它是GMT。 我该怎么办?