繁体   English   中英

Windows / C#如何记住当前系统的年份/日期

[英]How did windows/c# remember the current systems year/date

最近,我正在为我的项目进行单元测试。

我已经给出了测试该方法的任务。 该方法应根据当前系统日期返回最近的季度日期。

因此,我使用以下c#代码调用了当前系统日期:

string currentYear = DateTime.Now.ToString();

当我运行查询时,它按预期工作。

因此,现在是我的策略来提出该方法错误的时候了。 因此,我将系统日期更改为10/01/14(dd / mm / yy)。

另外,我还自定义了当前系统日期格式,以仅保留年份的后两位数字。 例如:如果year是2014 ,则仅显示14

您可以在下图中观察短日期和长日期。

自订日期

当我在Visual Studio 2012中运行/调试测试时,尽管我已将其修改为14,但它仍显示为2014作为当前系统日期。

问题:真正的问题是,即使系统日期更改为14,系统/程序在当年还是2014年。这可能很愚蠢,但我的疑问是, Why it is not 1914 or 1814 and why it is 2014 ?

它在哪里存储了当前日期或年份信息? Windows是否管理这些东西,还是C#照顾了日期?

真正的问题是,即使系统日期更改为14,系统/程序在当年还是2014年也是如此。这可能很愚蠢,但我的疑问是,为什么不是1904年或1804年,为什么不是2014年?

C#仅从系统中检索日期,而Windows确定了要发送的数据。

对于两位数的日期,Windows允许您在“ 控制面板”的“ 区域和语言”小程序中定义它们的含义。 这样,您可以根据自己的使用情况指定要代表的范围。

日期格式对话框的屏幕截图

日期的显示方式不是存储日期,而是显示日期。

2014年1月1日可能有多种不同的格式,例如
2014-01-01
2014年1月1日
14年1月1日
1/1/14
2014年1月1日
001-2014
但是所有内部都以完全相同的方式持有。

请注意屏幕快照上的高级设置-这将向许多Windows程序指示如何将输入的年份解释为两位数,因此它知道是否应该将输入为XX的日期视为19XX或20XX-这将覆盖手动输入的日期,而不是系统日期

您的C#应用​​程序没有存储该日期,Windows会为您处理。

正如肖恩(Sean)所述,通过从YYYY更改为YY,您仅更改了日期的显示方式 ,而不是日期的存储方式 Windows不会将其系统时间信息存储为特定的日期格式。 相反,它记录自1601年1月1日00:00以来的100毫秒间隔数。这样一来,时间跟踪就不受其显示方式的影响,并允许您以多种不同的格式显示日期和时间。

出于好奇,我们选择了该特定日期,因为公历以400年为一个周期(开始重复时)运行,而1601是该周期的第一年,在开发Windows NT时处于活动状态。

另外,Unix系统将该信息存储为Unix TimePOSIX Time ,计算从1970年1月1日00:00开始经过的秒数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM