有没有办法以秒为单位获取一天中的当前时间?请注意,我问的是一天中的时间,而不是UTC时间。
我想要的是一个介于0-86400(12:00AM-11:59PM)之间的值(以秒为单位)。我正在开发一个每天工作的应用程序,当一天结束时,时间(以秒为单位)应该会重新回到0
。
假设现在是上午 10:00
。我应该得到 36,000 秒,如果我的时间是下午 5:00
,我应该得到 61,200 秒。
PS:我不知道现在的时间。程序将使用currentTime()
函数自行计算。
我建议:
int secondsOfDay = LocalTime.now(ZoneId.of("Europe/Rome")).toSecondOfDay();
注意事项:
ZoneId.system默认()
,或者更好的是在你的情况下给出一个命名的区域,比如ZoneId.of(欧洲/罗马)
。LocalDate.now(你的时区). atStartOfDay(你的时区)
的计算。使用java.time.LocalTime
和java.time.temporal.着急场
:
// 10:00 AM
LocalTime d = LocalTime.of(10, 0);
System.out.println(d.get(ChronoField.SECOND_OF_DAY)); // 36000
// 05:00 PM
d = LocalTime.of(17, 0);
System.out.println(d.get(ChronoField.SECOND_OF_DAY)); // 61200
// 23:59:59
d = LocalTime.of(23, 59, 59);
System.out.println(d.get(ChronoField.SECOND_OF_DAY)); // 86399
// midnight
d = LocalTime.of(0, 0);
System.out.println(d.get(ChronoField.SECOND_OF_DAY)); // 0
这将打印:
36000
61200
86399
0
注意事项:
>
这只是例子。如果你想从当前时间获取值,只需使用LocalTime.now()(或LocalTime.now(ZoneId.of(“timezone-name”)
),如@Ole V.V
.的答案所示)。
作为时区名称
,请始终使用IANA时区名称(格式始终为Continent/City
,如
or
CST或
PST
),因为它们不明确且不标准。您可以通过调用
ZoneId.getAvailableZoneIds()
来获取可用时区列表(并选择最适合您的系统的时区)。
在 Java 8 中,您可以创建一个持续时间
实例。
例如:
LocalDateTime date = LocalDateTime.now();
long seconds = Duration.between(date.withSecond(0).withMinute(0).withHour(0), date).getSeconds();
或者更简单地说,您可以将 LocalDateTime
转换为 LocalTime
实例,然后应用 to SecondOfDay()
方法:
LocalDateTime date = LocalDateTime.now();
int seconds = date.toLocalTime().toSecondOfDay();
来自java.time.LocalTime
javadoc:
public int toSecondOfDay()
以一天中的秒数提取时间,从 0 到 24 * 60 * 60 - 1。
问题内容: 在Unix系统上,是否有办法在Java中获得具有微秒级精度的时间戳?类似于C的gettimeofday函数。 问题答案: 不,Java没有该功能。 它确实具有System.nanoTime(),但是仅提供了一些先前已知时间的偏移量。因此,虽然您不能从中获取绝对数字,但可以使用它来测量纳秒(或更高)的精度。 请注意,JavaDoc表示,尽管这提供了纳秒级的精度,但这并不意味着纳秒级的精度
问题内容: 在我可以设置例如 是否有任何符号(%something)以毫秒为单位返回当前时间? 问题答案: 没有完全符合您需要的Log4J符号。 以给定的模式返回当前日期,该模式由(放在方括号之间的模式)定义,但是没有给您以毫秒为单位的时间。 给出自 执行开始以来的 毫秒数。 实现所需目标的一种可能方法是扩展Log4j的行为,这要复杂得多,但是如果绝对必要,请按以下步骤进行: 自定义log4j(编
问题内容: 我有一些用Go编写的代码,我正在尝试更新这些代码以使用最新的每周构建。(它最后一次在r60下构建)。现在,一切正常,除了以下几位: 关于如何更新它以与当前Go实施一起使用的任何建议? 问题答案:
问题内容: 我需要类似的简单内容,但需要自1970年以来的秒数,而不是当前日期,小时,分钟和秒。 似乎没有提供该选项。有没有简单的方法? 问题答案: 这应该工作:
Linux中是否有shell命令来获取以毫秒为单位的时间?
问题内容: Linux中是否有shell命令来获取时间(以毫秒为单位)? 问题答案: 返回秒数+当前纳秒。 因此,这就是您所需要的。 例: 返回自纪元以来的秒数(如果有用)。