Tag: timezone

获取当前位置的国家/地区和时间戳

我想知道我的应用程序在哪里使用。 以下是获取国家/地区名称的代码: public string Country = RegionInfo.CurrentRegion.DisplayName; 以下是获取时区的代码: public void TimeStamp() { TimeZone zone = TimeZone.CurrentTimeZone; // Demonstrate ToLocalTime and ToUniversalTime. DateTime local = zone.ToLocalTime(DateTime.Now); _TimeStamp = local.ToString(); } 我想看看这是否适用于其他位置和IP地址。 我试图使用cyperghost更改我的IP地址,但没有任何改变。 我住在丹麦,上面的代码仍显示“Denmark xx.xx.xx xx.xx.xx”。 如何测试此代码是否真正按照我的意愿运行?

是否有任何传递的方法接受UTC的timezoneoffset并在C#中计算时区?

我正在调用一个标准化给定地址的服务,并给出UTC偏移结果的时区(例如:-5:00等)。 C#中是否有一个函数接受UTC的timezoneoffset并计算时区(CST,EST,PST等三个字符)?

将DateTime转换为UTC时,调整规则是什么?

在TimeZoneInfo.ConvertTimeToUtc()的MSDN页面中,有以下信息框: 如果当前计算机的本地时区包含多个调整规则,则ConvertTimeToUtc方法的此重载可以返回与TimeZone.ToUniversalTime和DateTime.ToUniversalTime方法不同的结果。 无论dateTime是否位于其日期范围内,TimeZone.ToUniversalTime始终将当前调整规则应用于时区转换。 在.NET Framework 3.5上执行时,DateTime.ToUniversalTime也会将当前调整规则应用于时区转换,无论dateTime是否位于其日期范围内。 我不确定我明白这意味着什么。 什么是这些调整规则,以及ConvertTimeToUtc()和TimeZone.ToUniversalTime()之间的结果如何不同?

如何在每天的给定时间执行代码?

我正在尝试为我的程序添加一个function,该function将在芝加哥期货市场关闭后每天执行代码。 这意味着我想在美国东部时间早上5:35(市场所在的中部时间4:35)运行代码。 当然,当夏令时发生时,这将在EST(UTC -5)和EST(UTC -4)之间来回切换。 我知道有很多类似的问题,但是它们似乎都没有提供我可以使用的解决方案。 主要的建议似乎是使用Task Scheduler或Quartz,但是,我无法在我的程序中实现它们。 我认为最有希望的解决方案是使用TimeZoneInfo , DateTime和TimeSpan的组合来安排每天将在合适的时间触发的计时器。 我目前的解决方案是: DateTime now = DateTime.Now; DateTime currentDateTime = now.DateTime.Date; DateTime expiryDateTime = currentDateTime .AddHours(17) .AddMinutes(35) .AddDays( now.DateTime.Hour >= 18 + utcOffset || (now.DateTime.Hour == 17 && now.DateTime.Minute >= 35) ? 1 : 0); Timer timer = new Timer( …, null, expiryDateTime – DateTime.Now, …); […]

使用C#将时间转换为指定的时区?

我正在使用.Net 3.5在C#中开发应用程序。 我有用户的时区值以这种格式存储在DB中(-05:00,1) ,其中-5.00表示EST时区值, 1表示此时区跟随夏令时(如果0不是夏令时)区)。 现在我想考虑夏令时值将任何日期时间值转换为此时区值。 任何帮助表示赞赏。 谢谢

如何使用.net 更改Windows2k8的时区设置

我已经尝试用c#代码改变我的系统的时区几天了,而我正在尝试的任何东西都没有多大意义或工作。 我开始尝试使用我在其他问题上看到的SetTimeZoneInformation的PInvoke语法。 [DllImport(“kernel32.dll”, CharSet = CharSet.Auto)] private static extern bool SetTimeZoneInformation([In] ref TimeZoneInformation lpTimeZoneInformation); 我正在研究如何创建TimeZoneInformation结构并因为我的系统显然具有动态DST系统而感到困惑。 事实certificate,自从微软Vista添加了一种处理时区的新方法以来。 您现在必须使用SetDynamicTimeZoneInformation [DllImport(“kernel32.dll”, CharSet = CharSet.Auto)] private static extern bool SetDynamicTimeZoneInformation([In] ref DynamicTimeZoneInformation lpTimeZoneInformation); 我在msdn上搜索了这个API的帮助,发现了一些问题,“应用程序必须具有SE_TIME_ZONE_NAME特权才能使此function成功。” 最终我发现这个页面看起来像是一个很好的代码来完成这个。 问题是它不起作用。 这是我的非工作代码: [StructLayout(LayoutKind.Sequential)] public struct LUID { public int LowPart; public int HighPart; } [StructLayout(LayoutKind.Sequential)] public struct TOKEN_PRIVILEGES { public LUID Luid; public UInt32 […]

TimeZoneCode到TimeZoneInfo

在我们的MS动态CRM项目中,我们创建了一个批量用户上传批次。 批处理从excel文件中读取并对用户进行批量上载。 该批次需要设置的一件事是时区码。 在excel文件中,时区将被写为例如“UTC + 1” CRM使用的代码似乎是SQL服务器正在使用的时区代码,可以在此处找到。 映射这些最简洁的方法是什么? 我的想法到目前为止: 硬编码转换商店 以某种方式从CRM获取代码 以某种方式从SQL获取代码 目前我们刚刚使用硬编码值实现了我们自己的转换类。 有没有更好的办法? 我们能以某种方式利用.net TimezoneInfo类吗? 更新 为了获得所有CRM时区,我们执行了以下操作: var colSet = new ColumnSet(true); var query = new QueryExpression(TimeZoneDefinition.EntityLogicalName) { ColumnSet = colSet}; var timeZoneDefs = service.RetrieveMultiple(query).Entities.Select(tz => tz.ToEntity()); 但似乎唯一填充的属性是Id,Code,StandardName和UserInterfaceName。 似乎只有UI名称包含我们正在寻找的偏移量。 有没有办法确保加载Bias属性?

Quartz.NET – 这个unit testing不应该通过吗?

这个问题与这个问题有关,但是更加笼统,可以独立对待。 编辑:Quartz版本是v2.0.1 根据我的理解,以下unit testing应通过: [Test] public void Test() { // run every first day of month at 14:00 hours CronExpression expression = new CronExpression(“0 0 14 1 * ?”); // TimeZoneInfo.Local = {(UTC+01:00) Amsterdam, Berlin, Bern, Rom, Stockholm, Wien} if (!TimeZoneInfo.Local.SupportsDaylightSavingTime) { return; } // get “summertime” period for current timezone var daylightChange = TimeZone.CurrentTimeZone.GetDaylightChanges(2013); […]

将日期字符串解析为某个时区(支持夏令时)

好吧,过去几周我一直在努力工作,我遇到了一个小问题。 我认为我的思想现在不能完成任务:)所以我需要一些提示/帮助! 这可能很简单,但我的头还没有点击。 用户将在AEST中输入日期和时间。 还有一个应用程序集“默认”时区(因为它可能需要更改),目前设置为“AUS东部标准时间” 因此,我们在美国的服务器上有一个没有时区和定义的系统时区的用户字符串(因此本地不匹配,无法更改或使用) 现在我需要的是一种方式来说“使用时区X解析此用户输入的字符串”我不能只输入+10或+11作为偏移量,因为日期可以在夏令时之内或之外; 即使对于相同的时区,肯定会在+10和+11之间进行更改! 当前的AEST时间也可能在DST之内或之外,因此我不能只将UTC日期转换为当前的AEST时间并获取“zzz”字符串并附加它,因为日期将在一小时后关闭以输入任何内容当前DST设置。 现在代码实际上就是这样: TimeZoneInfo ConvTo = TimeZoneInfo.FindSystemTimeZoneById(ConfigurationManager.AppSettings[“DefaultTimeZone”]); DateTimeOffset getDate = TimeZoneInfo.ConvertTime(DateTimeOffset.UtcNow, ConvTo); string TimeZoneId = ” ” + getDate.ToString(“zzz”); DateTimeOffset cvStartDate = DateTimeOffset.MinValue; DateTimeOffset.TryParse(StartDate + TimeZoneId, out cvStartDate); 然后我通过检查它是否仍然== DateTimeOffset.MinValue或将其转换为UTC并添加到数据库来检查日期是否无效,它将在显示时转换回AEST。 然而,有些日期是一小时,其他日期是完美的(如预期的那样):) 解决这个问题最优雅的方法是什么? 编辑: 为了帮助解释这个问题,我写了一些测试代码作为Windows测试应用程序: // User entered date string EnteredDate = “2011/01/01 10:00:00 AM”; // Get the timezone […]

Noda Time – 带区域的开始/结束日期

在代码运行的系统上设置的时区中,获取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(DateTimeZoneProviders.Bcl.GetSystemDefault()); 鉴于这些值,我需要测试另一个ZonedDateTime是否在它们之间。