问题标签 [system-clock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4919 浏览

android - Android - 获取当前时间而不依赖于设备的时钟

我注意到 System.currentTimeMillis() 时间取决于设备。如果我更改设备时钟上的时间,此方法将返回不同的答案。

例如:如果现在的实际时间是 10:00,并且我将设备上的时钟更改为 9:30,那么 System.currentTimeMillis() 将返回 9:30 的时间(以毫秒为单位……)。

我也试过这个答案和其他一些答案,但没有发现任何有用的东西。我应该声明我的应用程序主要是离线工作的。有没有办法在没有外部 API 的情况下获得真正的当前时间(与设备无关)?

0 投票
1 回答
2357 浏览

variables - 需要创建一个与系统时钟同步的批处理脚本倒计时定时器

我想创建一个批处理文件倒数计时器(由于存在限制,需要是批处理脚本)。到目前为止,我已经使用了两个脚本来“有点”完成这项工作,但也有它们自己的缺点。

条件如下: 1. 需要以 xx:xx:xx 格式显示系统时间。2. 需要以分+秒为单位倒计时,格式为xx:xx。3. 需要能够在 12 小时内工作(例如晚上 7 点到早上 7 点)

我一直在使用的倒计时脚本(不是我自己创作的,我只是修改了某些部分)如下:

这段代码的缺点是它不与系统时钟同步,因此它变得不同步,而且它在午夜之前也不能用于夜班。

任何帮助改进它都会很棒,不确定如何使用系统时钟作为倒计时的同步变量。

谢谢!

0 投票
1 回答
433 浏览

c# - 自定义计时器和时差

我是 C# 新手,我正在尝试制作一个自定义计时器,它由两个标签(label1 和 label2)组成,显示时间字符串(时间和 time0/time1)和一个更改其文本的按钮(暂停/播放)每次点击时从暂停到播放,反之亦然。Label1 显示时间,它是由 datetime.now (hhmmss) 创建的字符串 var,label2 显示 time0,然后单击“暂停”按钮并再次单击“播放”按钮,它将显示 time1(时间 1 由以下公式计算)。

它执行以下操作:

  1. 获取系统 datetime.now (hhmmss),将其保存在时间字符串中并在 label1 中显示
  2. 按下按钮暂停,将时间值保存在另一个字符串time0 中并显示它在 label2 中停止
  3. 按下按钮播放,开始 label2 的时间(time1)与 label1 的时间不同步

要计算time1我想使用这个公式:

time1 = DateTime.Now - ((DateTime.Now 和time0之间的差异) - 1 秒)

我被困在第三点,因为我不知道如何计算两个字符串之间的时间差并将新时间time1用作 label2 和下一次点击的文本。

这是我的实际代码,任何帮助完成它都非常感谢,谢谢。

0 投票
0 回答
636 浏览

android - Android以编程方式同步时钟

我正在开发一个应用程序:
1. 在封闭网络中运行(无法访问互联网)。
2.所有目标设备都有root权限。

我需要每小时将设备时钟与我的服务器时钟同步。
我发现我无法更改默认的 ntp 服务器。

我打算使用返回服务器当前时间戳并以编程方式更改时间的 Web 服务来执行此操作。

有没有更常见的方法来做到这一点?

0 投票
2 回答
1090 浏览

c# - 在 C# 中使用 Win32SetSystemTime 修改系统日期(只有日期,没有时、分、秒)

是否可以在不更改小时、分钟和秒(仅年、月和日)的情况下设置系统时间(使用Win32SetSystemTime)?

这是我的代码。如您所见,我评论了 falseData.Hour、falseData.Minute 和 falseData.Second,因为我不想更改它们。但是,使用此代码,系统时间会自动设置为 01:00:00。手动,我可以更改系统日期而不更改小时、分钟和秒(通过单击任务栏的时钟),但是以编程方式?

任何帮助将不胜感激。谢谢。马可

0 投票
3 回答
33779 浏览

amazon-web-services - 在使用 Amazon 的 EC2 服务来对抗时钟漂移时,我应该使用 NTP 服务器吗?

我正在使用 AWS,并且在 EC2 服务器上……</p>

我的时钟差了一分钟,所以尽管我已经安装并运行了 NTPD

由于我收到此错误,因此会出现 ntp 数据包被阻止或存在其他问题...</p>

如果我应该联系另一台服务器以获取 NTP 信息,或者我是否需要其他其他配置,有人知道 AWS 吗?

谢谢, - 戴夫

编辑:包括评论的输出......

第二次编辑:

以下是 /etc/ntp.conf 文件的内容

以下是“ntpq -p”的输出

0 投票
2 回答
154 浏览

java - 如何使用粗略的计时器分辨率在 Windows 中编写 Java Thread.sleep()

我有一个使用Thread.sleep(msUntilActionNeeded);. 该变量设置为毫秒数,直到我希望程序开始与一天中的时间一致的操作,所以它并不重要。即使关闭 5000 毫秒也不成问题,因此 10 毫秒的分辨率是多余的。

(次要)问题是 Windows 报告A program or service has requested a timer resolution smaller than the platform maximum timer resolution.

没有必要让计时器分辨率如此之小。我已将毫秒四舍五入到最接近的 10 毫秒的倍数,但没有明显效果。

如何更改我的程序或 JVM 设置以使请求的计时器分辨率不那么小?

0 投票
2 回答
2426 浏览

c++ - 与 Windows(和 Windows Embedded CE)中的 CLOCK_MONOTONIC 类似的功能

我有一些需要计算时间间隔的 C++ Windows 代码。为此,如果它检测到在 WinCE 和GetSystemTimeAsFileTime中运行其他 Windows 平台,它会使用GetCurrentFT 。但是,如果我没记错的话,这可能容易受到系统时钟操作的影响(即有人更改系统时钟会使测量的时间间隔不可靠)。

对于这些平台(WinCE 和其他 Windows 平台)是否有类似于 UNIX 的 CLOCK_MONOTONIC 的东西,它会使用单调递增的计数器而不是系统时钟?

0 投票
1 回答
257 浏览

android - 如何修改 Robolectric 中的时间以发出警报

我正在尝试使用 Robolectric 测试一种方法(第一次接触 Robolectric)。
我想提前设置系统时钟以发出警报,该警报之前设置为:

我尝试使用 SystemClock.setCurrentTimeMillis(time + alarmDelay) 但它不会触发任何东西。我是否应该创建一个 MockedSystemClock,但我不知道该使用哪种方法。
请给我一个想法。

0 投票
2 回答
1504 浏览

android - 我们可以用什么替换 SystemClock.elapsedRealtime() 以获得可靠的时间?

我有一个负责更新时钟并在不同时间执行特定任务(如播放歌曲)的 android 服务。我尝试使用 Timer.scheduleAtFixedRate(new MyTask(), 0, 1000L) 之类的东西,但我在 1 小时内延迟了 4 分钟以上。现在我决定:
1) 在 var long expectedtNextSystemMilli 中使用 System.currentTimeMillis() 记录开始时间
2) 将 1 秒 (1000 ms) 添加到此 var 以获取下一个日期/时间以再次执行任务
3) 在可运行文件中任务计算“实际系统时间”和来自 var 的预期时间之间的延迟,以安排任务的下一次执行。

经过几次测试,我注意到还有一个延迟问题,并在文档中阅读到不鼓励使用 System.currentTimeMillis() 来测量经过的时间,我们必须使用 SystemClock.elapsedRealtime()。我也做到了,下面是 MyTask 的代码

跟踪这段代码,我惊讶地发现 SystemClock.elapsedRealtime() 返回了 28 秒的跳跃,如您所见

07-13 22:15:00.041:V/TimerManagerService(19377):onTick 延迟 = 361 结束,跟踪 = 539
07-13 22:15:00.041:D/TimerTick(19377):以毫秒为单位的新延迟为 999,elapsedRealtime = 84800078
07-13 22:15:01.041: I/TimerManagerService(19377): 定时器工作。
07-13 22:15:01.041: E/TimerTick(19377): 系统花费的错误时间毫秒 = -28585> 1s
07-13 22:15:01.041: E/TimerTick(19377): 系统花费的错误时间毫 = -27585> 1s
07-13 22:15:01.041:E/TimerTick(19377):系统花费的错误时间,单位为毫 = -26586> 1s
07-13 22:15:01.041:E/TimerTick(19377):系统花费的错误时间(以毫秒为单位)= -25586> 1s
07-13 22:15:01.041:E/TimerTick(19377):系统花费的错误时间(以毫秒为单位)= -23587> 1s
07-13 22:15:01.041: E/TimerTick(19377): 系统花费的错误时间毫秒 = -22587> 1s
07-13 22:15:01.041: E/TimerTick(19377): 系统花费的错误时间毫 = -21588> 1s
07-13 22:15:01.041:E/TimerTick(19377):系统在毫中花费的错误时间 = -20588> 1s
07-13 22:15:01.041:E/TimerTick(19377):系统花费的错误时间(以毫秒为单位)= -19589> 1s
07-13 22:15:01.041:E/TimerTick(19377):系统花费的错误时间(以毫秒为单位)= -18589> 1s
07-13 22:15:01.041:E /TimerTick(19377):系统花费的错误时间(以毫秒为单位)= -17589> 1s
07-13 22:15:01.041: E/TimerTick(19377): 系统花费的错误时间毫秒 = -16590> 1s 07-13 22:15:01.041: E/TimerTick(19377): 系统花费的错误时间毫 = -15590> 1s 07-13 22:15:01.041: E/TimerTick(19377): 系统花费的错误时间毫秒 = -14591> 1s 07-13 22:15:01.041: E/TimerTick(19377):系统花费的错误时间(以毫秒为单位)= -13591> 1s 07-13 22:15:01.041:E/TimerTick(19377):系统花费的错误时间(以毫秒为单位)= -12591> 1s 07-13 22:15:01.041:E /TimerTick(19377):系统花费的错误时间(以毫秒为单位)= -11592> 1s 07-13 22:15:01.041:E/TimerTick(19377):系统花费的错误时间(以毫秒为单位)= -10592> 1s 07-13 22 :15:01.041:E / TimerTick(19377):系统花费的错误时间(以milli = -9592> 1s 07-13 22:15:01.041:E / TimerTick(19377):系统花费的错误时间(以milli = -8593) > 1s 07-13 22:15:01.041:E/TimerTick(19377):系统花费的错误时间(以毫秒为单位)= -7594> 1s 07-13 22:15:01.041:E/TimerTick(19377):系统花费的错误时间(以毫秒为单位)= -6594> 1s 07 -13 22:15:01.041:E/TimerTick(19377):系统花费的错误时间(以毫秒为单位)= -5595> 1s 07-13 22:15:01.041:E/TimerTick(19377):系统花费的错误时间(以毫秒为单位) = -4596> 1s 07-13 22:15:01.041:E/TimerTick(19377):系统花费的错误时间,以毫秒为单位 = -3596> 1s 07-13 22:15:01.041:E/TimerTick(19377):错误系统花费的时间(以毫秒为单位)= -24586> 1s 07-13 22:15:01.051:E/TimerTick(19377):系统花费的错误时间(以毫秒为单位)= -2597> 1s 07-13 22:15:01.051:E/ TimerTick(19377):系统花费的错误时间(以毫秒为单位)= -1598> 1s 07-13 22:15:01.051:E/TimerTick(19377):系统花费的错误时间(以毫秒为单位)= -598> 1s 07-13 22: 15:01.051:V/TimerManagerService(19377):onTick 延迟 = 331 结束,跟踪 = 540
07-13 22:15:01.051:D/TimerTick(19377):以毫秒为单位的新延迟为 400,elapsedRealtime = 84830677
07-13 22:15:01.450:I/TimerManagerService(19377):定时器正在工作。

( _ _ _
_ ), 延迟);

2)调度调用相同的run(),但似乎花费超过28秒来完成它07-13 22:15:01.041:E / TimerTick(19377):系统花费的错误时间以milli = -28585(ms)> 1s
尽管日食报告只有一秒 => 22:15:00.041 两次通话之间 22:15:01.041

另外我想我必须用什么来在android上获得准确的经过时间?