【发布时间】:2017-12-21 12:29:14
【问题描述】:
我需要将日期和时间转换为十六进制代码,以便在 IOT 设备上写入。 这是我的代码
private String getDateTimeToHexa() {
Calendar mCalendar = Calendar.getInstance();
TimeZone gmtTime = TimeZone.getTimeZone(TimeZone.getDefault().getDisplayName());
mCalendar.setTimeZone(gmtTime);
final Date date = mCalendar.getTime();
return Long.toHexString(date.getTime());
}
它返回 11 位十六进制代码我需要 8 位数字,就像十六进制的日期和时间是 47C7EDE0 对于这个日期 12:34:56 29/Feb/2008
请帮忙
【问题讨论】:
-
Integer.toHexString((int)(System.currentTimeMillis() / 1000))? -
date.getTime()返回的值以毫秒为单位,而47C7EDE0的十六进制值以秒为单位。这就是@shmosel 的评论正确的原因,因为它将毫秒转换为秒,然后再将其转换为十六进制。要查看47C7EDE0以秒为单位,请尝试打印new Date(0x47C7EDE0 * 1000L)。我收到Fri Feb 29 06:34:56 EST 2008因为我在美国东部时区。 -
如果你有 Java 8,打印
Instant.ofEpochSecond(0x47C7EDE0),你会得到2008-02-29T11:34:56Z。您显示的日期似乎是中欧时区。