从午夜开始的时间
我正在使用一个 Java 库,该库有一个需要时间信息的方法。 它是这样描述的:
public void function(byte[] time);
时间:时间以自午夜以来的 1/100 秒为单位,以三字节整数形式提供,从最高有效字节开始。
我不知道该怎么做。我可以获得以毫秒为单位的时间(Sysem.currentTimeInMillisecond)。但这给了我自 1970 年 1 月 1 日以来的毫秒数。
有人可以帮忙吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是我刚刚编写的代码。我认为这是可以自我解释的。将int转换为字节数组的逻辑是从
DataOutputStream.writeInt()
窃取的Here is the code I have just written. I think it is self explainable enough. The logic of converting int to byte array is stolen from
DataOutputStream.writeInt()
tl;dr
java.time
现代方法使用 java.time 类来取代麻烦的旧遗留类,例如 Date 和 Date 类。
日历
。时区对于确定当前日期和时间至关重要。
获得当天的第一刻。
将经过的时间计算为
Duration
对象。
获取该总时间跨度中的毫秒数。
但您需要 1/100 秒的粒度,而不是 1/1,000 秒(即毫秒)。所以除以十。
快捷方式是访问
ZonedDateTime
对象的MILLI_OF_DAY
字段,从而无需获取一天的开始时间。关于 java.time
java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧遗留日期时间类,例如
java.util.Date
,日历
, & ;SimpleDateFormat
。Joda-Time 项目,现已在 维护模式,建议迁移到java.time 类。
要了解更多信息,请参阅 Oracle 教程。并在 Stack Overflow 上搜索许多示例和解释。规范为 JSR 310。
您可以直接与数据库交换java.time对象。使用符合 JDBC 驱动程序 /jeps/170" rel="nofollow noreferrer">JDBC 4.2 或更高版本。不需要字符串,不需要 java.sql.* 类。
从哪里获取 java.time 类?
ThreeTen-Extra 项目通过附加类扩展了 java.time 。该项目是 java.time 未来可能添加的内容的试验场。您可能会在这里找到一些有用的类,例如
间隔
,YearWeek
,YearQuarter
和 更多。tl;dr
java.time
The modern approach uses the java.time classes that supplanted the troublesome old legacy classes such as
Date
&Calendar
.Time zone is crucial in determining the current date and time-of-day.
Get first moment of that day.
Calculate the elapsed time as a
Duration
object.Get the number of milliseconds in that total span of time.
But you want 1/100th of a second granularity, not the 1/1,000th of a second that is milliseconds. So divide by ten.
A shortcut would be to access the
MILLI_OF_DAY
field of theZonedDateTime
object, obviating the need to get the start of day.About java.time
The java.time framework is built into Java 8 and later. These classes supplant the troublesome old legacy date-time classes such as
java.util.Date
,Calendar
, &SimpleDateFormat
.The Joda-Time project, now in maintenance mode, advises migration to the java.time classes.
To learn more, see the Oracle Tutorial. And search Stack Overflow for many examples and explanations. Specification is JSR 310.
You may exchange java.time objects directly with your database. Use a JDBC driver compliant with JDBC 4.2 or later. No need for strings, no need for
java.sql.*
classes.Where to obtain the java.time classes?
The ThreeTen-Extra project extends java.time with additional classes. This project is a proving ground for possible future additions to java.time. You may find some useful classes here such as
Interval
,YearWeek
,YearQuarter
, and more.现在创建一个公历。克隆它并将小时、分钟、秒和毫秒设置为零。从两者中获取毫秒并找出差异,然后转换为百分之一。
Create a Gregorian Calendar for now. Clone it and set the hours, minutes, seconds, and milliseconds to zero. Get milliseconds from both and find the difference, then convert to hundredths.