Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是DateTime。现在在不同的时间在不同的进程中调用时总是单调的吗?_C#_Datetime - Fatal编程技术网

C# 是DateTime。现在在不同的时间在不同的进程中调用时总是单调的吗?

C# 是DateTime。现在在不同的时间在不同的进程中调用时总是单调的吗?,c#,datetime,C#,Datetime,假设我在一个进程中执行DateTime.UtcNow,一段时间后在另一个进程(甚至另一个exe文件)中执行DateTime.UtcNow 我是否保证第一次调用将返回一个小于或等于第二次调用的DateTime值,即即使调用几乎同时进行(即调用之间的差异为1ms或更小),第一次调用也不会比第二次调用“大” 假设在这些调用之间,机器时间不会以任何方式更改(例如,Windows时间服务被禁用)。一般来说,是的,时间只会向前移动,因此您可以相信,假设有一个稳定的环境—一个日期时间。现在/日期时间。UtcN

假设我在一个进程中执行
DateTime.UtcNow
,一段时间后在另一个进程(甚至另一个exe文件)中执行
DateTime.UtcNow

我是否保证第一次调用将返回一个小于或等于第二次调用的
DateTime
值,即即使调用几乎同时进行(即调用之间的差异为1ms或更小),第一次调用也不会比第二次调用“大”


假设在这些调用之间,机器时间不会以任何方式更改(例如,Windows时间服务被禁用)。

一般来说,是的,时间只会向前移动,因此您可以相信,假设有一个稳定的环境—一个
日期时间。现在
/
日期时间。UtcNow
将始终大于之前的值

然而,你应该避免过多地依赖这一点。有些事情可能会打破这一假设。对于本地时间,您需要注意DST,但即使使用世界时,也可能有一些事情会影响您。你可能很不走运,刚好赶上了与服务器同步的时间,并通过返回两秒钟进行自我更正。这不太可能,但仍有可能。

是和否 像
DateTime这样的功能。现在
依赖于硬件提供并通过操作系统公开的计时器和时钟。这些计时器和时钟的可靠性完全取决于平台。话虽如此,我从未听说过像你所描述的那样,时钟似乎向后移动的例子

可能会有更好的时钟
如果您迫切需要一种高度可靠、高分辨率的计时机制,
System.DateTime.Now
System.DateTime.UtcNow
不一定是最好的资源。Win32 API公开了更精确的“多媒体”计时器和计数器(例如,分辨率为5-10毫秒而不是50毫秒)

除非您碰巧在几毫秒内更改了机器的日期时间,否则我猜它不会比任何其他时间都大,
DateTime.Now
返回本地时间,在许多时区,由于夏令时的原因,该时间每年后退一小时。你真的想问关于
DateTime.UtcNow
?是的,我们可以谈论
DateTime.UtcNow
来简化事情。我建议你更新你的问题。另一个重要的方面是如何保持系统时钟同步-您是否假设只更新了Windows时间服务。假设Windows时间服务已禁用,并且在两次呼叫之间时间从未更改。