Tag: timezone

检测DST当前是否已启用

我需要找到一种简单的方法来了解本地计算机是否启用了“自动调整夏令时的时钟”选项。 如果选项打开,我需要知道它当前是否已应用(即它是否是当前系统中的DST)。 提前致谢

两次之间的小时数,不论国家和时区如何

我们如何确定两次之间经过的小时数。 例如: 下午3:30在旧金山和晚上7:30在迪拜 我不清楚的部分是,是否存在计算减去的时间跨度的通用方法,即考虑时区和国家。 我使用C#作为主要语言。 任何帮助将深表感谢。 提前致谢。

oracle odp.net SafeMapping转换,如果有时区的时间戳 – 如何获取偏移而不是区域名称

从c#开始,使用odp.net,我调用一个返回游标的oracle函数。 某些列的类型为“带时区的时间戳”(TSTZ)。 如果我直接使用OracleDataAdapter ,那些列将转换为System.DateTime,并且时区信息将丢失。 这是预期的行为,建议似乎是使用SafeMapping强制转换为字符串,如: dataAdapter.SafeMapping.Add(“column_name”, typeof(string)); 然后我确实将TSTZ作为一个字符串,但它使用的格式为DD-MON-YYYY HH:MI:SS.FF AM TZR如下: 23-NOV-12 08.10.12.057868000 PM ASIA/CALCUTTA 我想要它而不是偏移(例如格式为DD-MON-YYYY HH:MI:SS.FF AM TZH:TZD如: 23-NOV-12 08.10.12.057868000 PM +04:30 当我直接查询oracle(比如在Sql Developer中)时,我可以使用 Alter Session Set Nls_Timestamp_Tz_Format=’DD-MON-YYYY HH:MI:SS.FF AM TZH:TZM’ 获得我想要的格式。 使用odp.net我尝试在SetSessionInfo中设置格式: connection.Open(); OracleGlobalization glob = connection.GetSessionInfo(); glob.TimeStampTZFormat = “DD-MON-YYYY HH:MI:SS.FF AM TZH:TZM”; connection.SetSessionInfo(glob); 以及使用相同的连接执行alter session命令,但都没有任何效果。 我认为这是因为转换为字符串发生在稍后阶段,连接设置无效。 有没有其他方法可以让odp.net直接为我提供偏移量? 我无法更改oracle db函数,因此在方法中使用例如tz_offset不是一个选项。 如果这不可能,那么将时区字符串转换为偏移量的最佳方法是什么? 我正在考虑执行一个 select […]

.NET LINQ to实体按日期(日)分组

我在这里发布了同样的问题: LINQ to Entities group-by failure using .date 但是,答案并非100%正确。 它适用于所有情况,除非使用不同的时区。 当使用不同的时区时,它也会在时区上进行分组。 为什么? 我设法通过使用许多实体函数来绕过这个。 int localOffset= Convert.ToInt32( TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now).TotalMinutes); var results = ( from perfEntry in db.entry where (….) select new { perfEntry.Operation, perfEntry.Duration, localTime = EntityFunctions.AddMinutes(perfEntry.Start, localOffset – EntityFunctions.GetTotalOffsetMinutes( perfEntry.Start)) } ).GroupBy(x => new { Time = EntityFunctions.TruncateTime( EntityFunctions.CreateDateTime(x.localTime.Value.Year, x.localTime.Value.Month, x.localTime.Value.Day, 0, 0, 0)), x.Operation } […]

从服务器获取当前日期时间并将其转换为c#中的本地时间

帮助:我有一台服务器,有时间在格林威治标准时间-07.00小时。 我当地时间是格林威治标准时间+05.30。 我需要从服务器获取当前日期和时间,并将此日期和时间转换为我当地时间。 我尝试了很多代码,但仍未找到连续的方法。 有人可以帮帮我。 string zoneId = “India Standard Time”; TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById(zoneId); DateTime result = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tzi); DateTime cu = result.ToUniversalTime(); DateTime cur = cu.ToLocalTime(); 我已经尝试了上述所有方法,但仍然没有得到正确的答案。 假设我当前的当地时间是2014年3月9日下午12:51:00,那么我的服务器时间将是12.30小时,与当地时间不同,即从当地时间减去12小时30分钟以获得服务器时间。 我需要从服务器时间获取当地时间。 它怎么能实现? 请建议我一些解决方案..提前感谢您的答案

使用Noda Time在时区之间进行转换

我目前正在尝试确保我们的传统后端可以根据用户的当前时区(或更具体地说是偏移量)支持解析日期时间。 我们的服务器在东部标准时间,我们的大部分日期时间都来自那里。 但是,对于位于其他时区的用户,在检索这些日期时间时需要转换到其时区(或者,在这种情况下为偏移)。 此外,来自用户的日期时间必须在服务器上持久化之前转换为东部标准时间。 鉴于我们正在开发的前端是基于Web的,我能够在几分钟内检索用户的偏移量,并将该值传递到标头内的服务层。 我看了Noda Time并认为它是一个很棒的API。 它确实迫使我在更精致的事情中考虑时间,但我仍然不能100%确定我已正确使用它。 以下是我为上述转换编写的方法。 我测试了它们,它们似乎工作。 鉴于上面的场景,这看起来像是对图书馆的正确使用吗? 我正确地考虑约会时间吗? public static DateTime ConvertToUtcFromEasternTimeZone(DateTime easternDateTime) { NodaTime.DateTimeZone easternTimeZone = NodaTime.DateTimeZoneProviders.Tzdb.GetZoneOrNull(“America/New_York”); ZoneLocalMappingResolver customResolver = Resolvers.CreateMappingResolver(Resolvers.ReturnLater, Resolvers.ReturnStartOfIntervalAfter); var easternLocalDateTime = LocalDateTime.FromDateTime(easternDateTime); var easternZonedDateTime = easternTimeZone.ResolveLocal(easternLocalDateTime, customResolver); return easternZonedDateTime.ToDateTimeUtc(); } public static DateTime ConvertToEasternTimeZoneFromUtc(DateTime utcDateTime) { NodaTime.DateTimeZone easternTimeZone = NodaTime.DateTimeZoneProviders.Tzdb.GetZoneOrNull(“America/New_York”); NodaTime.DateTimeZone utcTimeZone = NodaTime.DateTimeZoneProviders.Tzdb.GetZoneOrNull(“UTC”); ZoneLocalMappingResolver customResolver […]

将Windows时区转换为moment.js时区?

我们在ASP.NET中有一个应用程序,它以Windows格式存储所有用户时区数据(通过TimeZoneInfo.Id)。 我们还使用moment.js和moment.js TimeZone库将UTC数据转换为客户端的用户数据。 这是一个复杂的AngularJs应用程序,需要在客户端进行时区转换。 到目前为止,我们使用NodaTime .NET库将Windows时区ID转换为Moment.js时区ID。 它适用于大多数常见时区。 但我们需要使这种转换100%兼容。 目前看来,没有可靠的方法将Windows时区ID映射到IANA时区数据。 存在很多差异。 我相信现代JS应用经常处理时区。 有时需要在服务器端(C#)和客户端(JS)上完全转换TZ。 有没有办法严格地将.NET TimeZoneInfo映射/转换为Moment.js时区对象?

我怎么说东区的当前UTC是什么

无论使用什么服务器,我都想要一种能够获得东部UTC时间的方法。 我在系统中的所有时间戳都设置为est,但我的Azure服务器设置为UTC,但我的本地开发盒和暂存站点是在est。最好的方法是什么? 谢谢你的帮助。 var estZone = TimeZoneInfo.FindSystemTimeZoneById(“Eastern Standard Time”); var utcTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now, estZone);

为什么C#没有检测到1970/1/1是否属于BST?

我正在使用第三方API,它返回时间值作为DateTime值填充1970年1月1日作为日期部分。 因此,对于1969-12-31T21:03:00.000-08:00 5点,它将返回类似1969-12-31T21:03:00.000-08:00 问题是,如果用户在伦敦时间,则C#无法应用1970-01-01的BST调整。 例如,UTC的1970-01-01 5AM应该是1970-01-01 6AM在伦敦。 见转换 但是,C#似乎不适用于此转换: var utcTime = new DateTime(1970, 1, 1, 5, 0, 0, DateTimeKind.Utc); var britishZone = TimeZoneInfo.FindSystemTimeZoneById(“GMT Standard Time”); var ukTime = TimeZoneInfo.ConvertTime(utcTime, britishZone); Console.WriteLine(ukTime); 上面的代码仍然会打印5AM。 但是,如果我将其设置为BST有效的最近日期,例如2016年10月1日,则相同的代码可以正常打印6AM。 为什么它会这样? 我该如何解决这个问题? 我们的应用程序需要跨任何TimeZone工作(即硬编码时区不是一个选项 – 我们基本上使用Windows本地时区)。

C#中的时区转换

我有一个日期格式,类似于: 星期一,2009年8月11日13:15:10 GMT 如何将其转换为EST格式?