将Windows时区转换为 moment.js时区?
我们在ASP.NET中有一个应用程序,该应用以Windows格式存储所有用户时区数据(由TimeZoneInfo.id). 我们还使用Moment.JS和Moment.JS时区库将UTC数据转换为客户端的用户数据.这是一个复杂的AngularJS应用程序,需要在客户端进行时区转换. 到目前为止,我们使用Nodatime .NET库将Windows时区ID转换为MONT.JS时区ID.在大多数常见的时区,它运行良好. 但是我们需要使这种转换100%兼容. 当前似乎没有可靠的方法将Windows时区ID映射到IANA时区数据.有很多差异. 我相信现代JS应用程序经常处理时区.有时需要在服务器端(C#)和客户端(JS)上精确转换TZ. 有没有一种方法可以严格映射/转换.NET TimeZoneInfo到MONM.JS时区对象? 解决方案 tl; dr: 继续在服务器端使用NODA时间 选择是使用BCL数据还是IANA数据;我个人会推荐IANA,但这
0 2024-04-15
编程技术问答社区
.NET在给定时区的情况下将日期时间转换为UTC
使用C#,我需要将传入DateTime值转换为UTC.我知道这些转换的.NET中有功能,但是我必须确定时区是标准时区列表 http://www.timegenie.com/timezones 在.NET中执行此操作的最佳方法是什么?我需要创建一个映射表以将时区转换为timezoneinfo.getsystemtimezones()(例如"太平洋标准时间(墨西哥))"中的IDS(墨西哥)") 这样我就可以使用timezoneinfo.findsystemtimezonebyid()? 感谢您的任何帮助 解决方案 我以前通过使用映射表存储在数据库中的时区ID来完成此操作.即包含TimeZone.GetSystemTimeZones() 结果的表 您实际上不需要使用TimeZoneInfo.FindSystemTimeZoneById():您可以使用TimeZoneInfo.ConvertTimeBySystemTimeZoneId()的一个过载之一进行转换.此方
0 2024-04-15
编程技术问答社区
如何在使用JSON.NET反序列化DateTime时保留时区?
我使用json.net在C#中解析一些JSON. JSON中的字段之一是日期/时间,如下: { "theTime":"2014-11-20T07:15:11-0500", // ... a lot more fields ... } 请注意,时间部分是07:15:11(GMT-5的TZ) 我从这样的流中解析JSON: using (var streamReader = new StreamReader(rcvdStream)) { JsonTextReader reader = new JsonTextReader(streamReader); JsonSerializer serializer = new JsonSerializer(); JObject data = serializer.Deserialize(reader); //... } 然后访问时间: Date
0 2024-04-14
编程技术问答社区
用诺达时间进行时区间转换
我目前正在尝试确保我们的遗产后端可以根据用户的当前时区(或更具体地说是偏移)来支持解决日期时间.我们的服务器处于东部标准时间,我们的大部分日期时间都源于那里.但是,对于其他时区的用户,在检索这些日期时间时需要转换为其时区(或在这种情况下为偏移).此外,在服务器上持续存在之前,必须将来自用户的日期时间转换为东部标准时间.鉴于我们正在开发的前端是基于Web的,因此我能够在几分钟内检索用户的偏移,并将该值传递到标题内的服务层中.我看着野时间,认为这是一个很棒的API.它确实迫使我在更精致的问题上考虑时间,但是我仍然不能100%确定我正确使用了它.这是我为上述转换所写的方法.我已经测试了它们,它们似乎有效.给定上面的方案,这看起来像库的正确使用吗?我是否正确考虑日期时间? public static DateTime ConvertToUtcFromEasternTimeZone(DateTime easternDateTime) { NodaTime.DateTimeZone e
0 2024-04-14
编程技术问答社区
当TimeZoneInfo.ConvertTimeToUtc对某些DateTime值进行转换时出现异常调用
当我为DT的特定值运行代码时,当我调用转换TimetOutC方法时会抛出异常. 我当地的机器TimeZoneID是" GMT标准时间" var tzi = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"); var dt = new DateTime(1995, 4, 2, 2, 55, 0); var t = TimeZoneInfo.ConvertTimeToUtc(dt, tzi); 例外是: System.ArgumentException was unhandled Message="The supplied DateTime represents an invalid time. For example, when the clock is adjusted forward, any time in the period that is skipped is invalid.\r\nPa
0 2024-04-14
编程技术问答社区
如何在ASP.NET MVC中进行时区划分?
在我的网站上,我需要知道人们在哪些时机,以便在适当的时间向他们显示消息.我不太确定该如何做有关如何执行此操作的教程. 我打算做的是:当用户访问我的网站时,他们将通过从下拉列表中选择它来设置时区.我将将它们的设置存储在数据库中,并使用它来计算时间. 我不确定我需要什么.我的数据库时间应该存储什么?我在某个地方读到应该将其存储为UTC.如何设置数据库来执行此操作?另外,我将在共享的托管站点上,因此必须以我可以做到的方式设置它(也许是通过webconfig?). . 接下来,我将需要所有时区的列表作为HTML助手或常规HTML.我真的不想做一个. 然后,就像我说的那样,我需要一个教程,向我展示该怎么做.我认为这是从那时起正在添加和减法的,但我可能是错的. 解决方案 为此,您绝对应该将时间戳存储在数据库中. 当您需要从网站上的数据库显示日期时,可以执行此操作: DateTime stamp = /* get datetime from the datab
0 2024-04-14
编程技术问答社区
获取当前的GMT时间
C#中是否有返回UTC(GMT)时区的方法?不是基于系统的时间. 基本上,即使我的系统时间不正确,我也想获得正确的UTC时间. 解决方案 而不是调用 DateTime.Now.ToUniversalTime() 您可以致电 DateTime.UtcNow 同一件事,但较短:)文档在这里 . 其他解决方案 不是基于系统的时间吗?您需要呼叫网络时间服务或类似的内容.您可以写一个 ntp 客户端,或者只是screenscrape 世界时钟;) 我不相信.NET内置了一个NTP客户端,但是很多可用的. 其他解决方案 我从Unity 使用此 //Get a NTP time from NIST //do not request a nist date more than once every 4 seconds, or the connection will be refused. //more servers at tf.nist.go
0 2024-04-14
编程技术问答社区
处理客户和服务器之间的时区问题,仅适用于日期型的DateTime
我在我的ASP.NET Web API应用程序中具有自定义验证属性,该属性检查日期是否为将来(将来的日期不允许).这是代码: protected override ValidationResult IsValid(object value, ValidationContext validationContext) { if (value != null) { var date = (DateTime)value; if (date != null) { if(date.Date > DateTime.UtcNow.Date) { return new ValidationResult(FormatErrorMessage(validationContext.DisplayName), new[] { validationContext.Me
0 2024-04-14
编程技术问答社区
使用C#将一个时间转换为指定的时区?
我正在使用.NET 3.5的C#中的应用程序.我有用户的时区值以这种格式(-05:00,1)存储在DB中> 1 指示该时区遵循日光节省(如果0不是日光保存区域). 现在,考虑到日光保存值,我想将任何日期时间值转换为此时区值. 任何帮助将不胜感激.谢谢 解决方案 只有一个偏移以及在日光保存时间是否真的不足以指示时区:可以有几个时区具有相同的标准偏移和DST偏移量,但它们具有DST过渡在不同的时间. 这些数据已经在数据库中了,还是您仍在设计它?理想情况下,您应该存储一个时区ID- 一旦有了TimeZoneInfo和要转换的瞬间, ConvertTimeFromUtc 和 BCL在所有这些方面有些羊毛,这是我开始其他解决方案 @skeet对时区是正确的.相信我,他们疯了.您的地方像印度这样的地方有.5小时的时间.像委内瑞拉这样的地方可以改变他们的时区.像美国这样的地方改变了他们的DST开始和结束的日期.您必须记住,时区受到该国的政治意愿的约束,并且它们确实改变了(比
0 2024-04-14
编程技术问答社区
使用C#将一个时间转换为指定的时区?
我正在使用.NET 3.5的C#中的应用程序.我有用户的时区值以这种格式(-05:00,1)存储在DB中> 1 指示该时区遵循日光节省(如果0不是日光保存区域). 现在,考虑到日光保存值,我想将任何日期时间值转换为此时区值. 任何帮助将不胜感激.谢谢 解决方案 只有一个偏移以及在日光保存时间是否真的不足以指示时区:可以有几个时区具有相同的标准偏移和DST偏移量,但它们具有DST过渡在不同的时间. 这些数据已经在数据库中了,还是您仍在设计它?理想情况下,您应该存储一个时区ID- 一旦有了TimeZoneInfo和要转换的瞬间, ConvertTimeFromUtc 和 BCL在所有这些方面有些羊毛,这是我开始其他解决方案 @skeet对时区是正确的.相信我,他们疯了.您的地方像印度这样的地方有.5小时的时间.像委内瑞拉这样的地方可以改变他们的时区.像美国这样的地方改变了他们的DST开始和结束的日期.您必须记住,时区受到该国的政治意愿的约束,并且它们确实改变了(比
0 2024-04-14
编程技术问答社区
解析包含时区信息的字符串DateTime
我正在尝试将字符串值转换为DateTime值,但正在获取System.FormateXception错误.这是因为时区信息是日期字符串的一部分.有什么方法可以处理此转换吗? string date = "Wed, 04 Jan 2012 20:18:00 EST"; DateTime dt = Convert.ToDateTime(date); Console.WriteLine(dt.ToString()); 解决方案 我不相信有任何如果您完全控制了格式,我会尽力避免使用时区信息,如果可以当然,偏移量不会提供相同的信息),或者如果您确实需要时区,则偏移时区标识符.请注意,.NET使用Windows系统时区标识符;我自己的 noda time 项目使用更广泛的 olson/Zoneinfo/tz 标识符,如果这对您有帮助.
0 2024-04-14
编程技术问答社区
如何正确使用时区?
我正在阅读很多有关时区, offset , utc ,本地时间, javaScript函数, dst ,培根,我试图将所有这些都放在一起以构建我的应用程序的固体/正确结构. 假设我的应用类似于stackoverflow. 这就是我正在做的... 服务器位于另一个国家,所以我将其设置为UTC 00:00. 我将日期存储为DateTimeOffset. 我不是存储TimeZoneID. 日期以这种格式发送给客户:2012-07-19T14:30:00-03:00. 我正在使用Angular Filter将其转换为当地时间. 我有几个问题... 1º服务器时区? 关于我的服务器(单个服务器)...是否应该使用"中性" UTC(+00:00)运行?如果将来,我们搬到了服务器在不同位置运行的农场怎么办? 2º我应该存储什么? 目前,我仅存储日期为DateTimeOffset.我正在阅读有关保存TimeZoneID的信息,但我认为对此完全没有用
0 2024-04-13
编程技术问答社区
从时区分钟偏移的TimeZoneInfo
从javaScript我传递给控制器​​,用户的客户端日期时间使用Date对象上的方法getTimezoneOffset从UTC中偏移的分钟数.现在,我在服务器端有这些信息,我想从中创建一个TimeZoneInfo.这怎么可能?如果这是不可能的,那么如何使用分钟偏移量将服务器端上的UTC日期转换为客户端的时区? 解决方案 我想从中创建一个TimeZoneInfo.怎么可能? 这是不可能的. A 时区偏移与时区不是同一件事.请阅读 timezone tag wiki ,尤其是标题为"时区!= offset"的部分. ...然后,如何使用分钟偏移量将服务器端上的UTC日期转换为客户端的时区? 创建代表那一刻的DateTimeOffset.例如: // From your database. Make sure you specify the UTC kind. DateTime utc = new DateTime(2013, 1, 1, 0, 0, 0
0 2024-04-13
编程技术问答社区
从DateTimeOffset中删除时区偏移?
此代码: DateTimeOffset testDateAndTime = new DateTimeOffset(2008, 5, 1, 8, 6, 32, new TimeSpan(1, 0, 0)); //CLEAN TIME AND DATE testDateAndTime = testDateAndTime.DateTime.Date; var datesTableEntry = db.DatesTable.First(dt => dt.Id == someTestId); datesTableEntry.test= testDateAndTime; db.SaveChangesAsync(); ...在我的数据库中产生此结果:2008-05-01 00:00:00.0000000 -04:00 我应该如何修改代码,以便将时区偏移从-4:00更改为testDateAndTime in testDateAndTime? 我也尝试了:
0 2024-04-13
编程技术问答社区
C# 英格兰夏令时(BST)的时区缩写
我需要显示具有当前时区缩写的标签.我的PC的时区目前设定为"(GMT)格林威治平均时间:都柏林,爱丁堡,里斯本,伦敦".结果,由于LN目前处于英国夏季时间. 看起来不可用的信息(TimeZone Abbrev).查看GMT TimeZoneInfo,我可以看到的关于名称的只是 Id "GMT Standard Time" StandardName "GMT Standard Time" DaylightName "GMT Daylight Time" 有什么办法可以从" GMT日光时间"或任何其他可用的Windows TimeZone信息中获取BST? 解决方案 TimeZoneInfo类推荐人"英国夏季"为" GMT日光时间",因此不可能.如果Microsoft将其存储为" BST",它将在DaylightName属性中. 在多年前在BCL博客上开发了TimeZoneInfo类,但我看不到他们如何选择DaylightName的价值观背后的解释
0 2024-04-13
编程技术问答社区
时区战略
我正在构建一个MVC 3应用程序,其中用户可能不在同一时区域,因此我的目的是将所有内容存储在UTC中,并在视图中从UTC转换为当地时间,并在本地时间转换为UTC. P> 进行一些浏览,尽管似乎没有很多好的解决方案.老实说,我期望至少可以将UTC时间自动转换为本地时间,但似乎并不存在. 我觉得只是想努力手动将每个输入转换为UTC,并手动将每个视图转换为本地时间显示会很容易出错,并且导致难以检测到时间未转换或从转换为 关于如何作为一般策略处理这一问题的任何建议? 编辑 每个人似乎都非常陷入"我如何获得客户时区"的作品上,正如我在其中一篇评论中提到的那样,这不是我的关注.我对确定其时区的用户设置很好,所以假设我已经知道客户时区是什么...这无法解决我的问题. 现在,在我渲染日期时,在每个视图上,我需要调用一种方法将其从UTC的本地时区进行渲染.每次我将提交日期发送到服务器时,我都需要将其从本地时区转换为UTC.如果我忘记这样做会有问题...提交日期是错误的,或者客户侧报告
0 2024-04-13
编程技术问答社区
GMT与UTC相同吗?
我正在经营一个针对世界的网站,来自世界各地的人们.该数据库包含国际日期线格式的时间.我正在使用JavaScript进行用户时区,并将数据库中的时间转换为用户的时间,然后在页面上显示.我想问一下国际日期线West是世界一级网站的正确格式吗?还是设置为UTC或GMT会更好? UTC和GMT和West国际日期线之间有什么区别?这三个一样吗?最后,我应该在用户时区的偏移偏移的服务器上设置什么时间? 解决方案 如果您对天文观测感兴趣,例如卫星,例如 gps gps ,或者如果您想引用技术标准( ut1 and ut1 与 utc - 从技术上讲,他们不是. 另外,如果您正在跟踪计算机犯罪分子或其他分布式活动,则需要确定在某些其他事件之前是否可能发生或可能不会发生某些事件.为此,您将需要学习和使用 noreferrer">网络时间协议(NTP).与UTC,UT1和UT. " 国际日期线 west west'''只是时间友好的名字定义为比UTC少12个小时(即UTC-12). 其
0 2024-04-13
编程技术问答社区
TimeZoneInfo.FindSystemTimeZoneById()在Unity应用程序中引发异常
如果我在C#控制台应用程序中执行此代码,则可以正常工作. TimeZoneInfo easternZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"); Console.WriteLine(easternZone.DisplayName); 但是,当我在Unity应用程序中使用相同的方法时,会抛出一个例外: System.TimeZoneNotFoundException: Exception of type 'System.TimeZoneNotFoundException' was thrown. at System.TimeZoneInfo.FindSystemTimeZoneByFileName (System.String id, System.String filepath) [0x00000] in :0 at System.Time
0 2024-04-12
编程技术问答社区
野田时间--带区的开始/结束时间
获取代表代码运行的系统设置的当前一天的开始和结束的ZonedDateTime的正确和简洁的方法是什么? 以下代码不是太多复杂吗? ZonedDateTime nowInZone = SystemClock.Instance.Now.InZone(DateTimeZoneProviders.Bcl.GetSystemDefault()); ZonedDateTime start = new LocalDateTime(nowInZone.Year, nowInZone.Month, nowInZone.Day, 0, 0, 0).InZoneStrictly(DateTimeZoneProviders.Bcl.GetSystemDefault()); ZonedDateTime end = new LocalDateTime(nowInZone.Year, nowInZone.Month, nowInZone.Day, 23, 59, 59).InZoneStrictly(
0 2024-04-12
编程技术问答社区
DateTime.ParseExact, 忽略时区
如果我有一个日期,例如2011-05-05T11:35:47.743-04:00 当我进行dateTime.parseexact编程上时,如何忽略时区(-04:00)? 解决方案 DateTimeOffset dt =DateTimeOffset.Parse("2011-05-05T11:35:47.743-04:00", null);
0 2024-04-12
编程技术问答社区