Tag: 日期时间

Hijri和Gregorian DateTime构造函数

对象传递给DateTime类型的构造函数的正确行为是什么? 我有组件年,月和日如下例: day = 1 month = 5 year = 1433 (which is the current Hijri year) 使用以下代码创建日期时间对象时,结果是有效的Greg日期 HijriCalendar hijri = new HijriCalendar(); //Get the First Day in the Month DateTime firstDayInMonth = new DateTime(1433, month, 1, hijri); 使用以下代码生成有效的Hijri日期: GregorianCalendar greg = new GregorianCalendar(); //Get the First Day in the Month DateTime firstDayInMonth = new […]

哪些计时器依赖于系统时间?

我还没有测试过这个。 我希望有人已经知道答案,所以我不必编写测试应用程序,否则我会。 🙂 通常当我想比较时间时,我只是存储DateTime.Now并在以后比较它。 我相信当用户在两者之间的某个地方更改用户的系​​统时间时,这会产生错误的结果。 这让我想知道计时器的行为方式是否相同。 哪些.NET计时器依赖于设置的系统时间? 考虑启动一个需要在一小时内过去的计时器。 当我将系统时间设置为前进一小时时会触发吗? 我从来没有真正关心这种可能的行为,但在某些情况下这可能很重要。 哪个计时器可以安全地对付这种情况,哪些计时器绝对不是?

如何可视化各种DateTime格式的显示方式?

我希望能够快速参考各种DateTime格式的显示方式,而不是开始编辑,编译,gawk和recurse的繁重过程,直到满意为止。

优化DateTime.Now的替代方案

我和一位同事在这个问题上来回走动,我希望得到一些外界意见,看看我提出的解决方案是否是一个好主意。 首先,免责声明:我意识到“优化DateTime.Now ”的概念对你们中的某些人来说听起来很疯狂。 我有几个先发制人的防御措施: 我有时会怀疑那些总是说“计算机速度快;可读性总是在优化之前”的人经常会从开发应用程序的经验中说出,虽然这些应用程序可能很重要但性能并不重要 。 我说的是要尽可能接近瞬间发生事情 – 比如,在几纳秒内(在某些行业中,这很重要 – 例如,实时高频交易)。 即使考虑到这一点,我在下面描述的替代方法实际上是非常易读的。 这不是一个奇怪的黑客,只是一个可靠而快速工作的简单方法。 我们有跑步测试。 DateTime.Now 很慢(相对来说)。 下面的方法更快。 现在,问题本身。 基本上,通过测试,我们发现DateTime.Now大约需要25个滴答(大约2.5微秒)才能运行。 当然,这是平均数千到数百万次通话的平均值。 看起来第一个呼叫实际上需要花费大量时间,后续呼叫要快得多。 但仍然是25个蜱是平均值。 然而,我和我的同事注意到DateTime.UtcNow运行的时间要少得多 – 平均只有0.03微秒。 鉴于我们的应用程序永远不会在夏令时发生变化时运行 ,我的建议是创建以下类: public static class FastDateTime { public static TimeSpan LocalUtcOffset { get; private set; } public static DateTime Now { get { return DateTime.UtcNow + LocalUtcOffset; } } static […]

将日期从波斯语转换为格里高利语

如何使用System.globalization.PersianCalendar将波斯日期转换为格里高利日期? 请注意,我想转换我的波斯日期(例如今天是1391/04/07)并获得格里高利日期结果,在这种情况下将是06/27/2012。 我正在数秒钟回答……

如何validationDateTime格式?

我想让用户输入DateTime格式,但我需要validation它以检查它是否可以接受。 用户可以输入“yyyy-MM-dd”并且没问题,但是他们也可以输入“MM / yyyyMM / ddd”或任何其他组合。 有没有办法validation这个?

根据YYYYMMDD等格式化.NET DateTime的最简单方法是什么?

我有一个DateTime类,并希望按照某种格式显示它…在这种情况下,我特别希望将其格式化为YYYYMMDD格式。 这样做的最佳C#/ .NET APIfunction是什么?

通缉:DateTime.TryNew(年,月,日)或DateTime.IsValidDate(年,月,日)

标题基本上都说明了一切。 我从遗留数据库(我无法更改)获得三个用户提供的整数( year , month , day ) 1 。 目前,我使用以下代码将这些整数解析为DateTime结构: try { return new DateTime(year, month, day); } catch (ArgumentException ex) { return DateTime.MinValue; } 有时,这些值不代表有效日期(是的,用户输入类似1999-06-31的内容,不,遗留应用程序没有validation这一点)。 由于在数据validation失败时抛出exception被认为是不好的做法 ,我宁愿用无exception代码替换它。 但是,我能找到的唯一解决方案是将整数转换为一个字符串和TryParseExact这个字符串,这对我来说似乎更加丑陋。 我错过了一些明显更好的解决方案吗 1实际上,它是YYYYMMDD格式的一个整数,但将其转换为年,月和日是微不足道的……

如何对非阿拉伯语等非英语语言使用DateTime.TryParse()?

我需要将字符串转换为非英语语言的DateTime对象。 我已经看到很多将DateTime转换为其他语言的字符串的例子,但不是相反。 这似乎不起作用: CultureInfo provider = new CultureInfo(“ar-AE”); // Arabic – United Arab Emirates string sample = “الاربعاء 16 مارس 2011”; // Arabic date in Gregorian calendar DateTime result; DateTime expected = new DateTime(2011, 3, 16); // the expected date bool b; b = DateTime.TryParse(sample, provider, DateTimeStyles.None, out result); Assert.IsTrue(b); Assert.AreEqual(expected, result); 另外,我需要处理其他日历中的字符串。 这是我尝试过的,它似乎也没有用。 CultureInfo […]

在C#中有更好的方法将DateTime四舍五入到最接近的5秒吗?

我想将DateTime四舍五入到最接近的5秒。 这是我目前正在做的方式,但我想知道是否有更好或更简洁的方式? DateTime now = DateTime.Now; int second = 0; // round to nearest 5 second mark if (now.Second % 5 > 2.5) { // round up second = now.Second + (5 – (now.Second % 5)); } else { // round down second = now.Second – (now.Second % 5); } DateTime rounded = new DateTime(now.Year, […]