如何在 android 中将日期时间转换为十六进制

How to convert date time in hex in android

我需要将日期和时间转换为十六进制代码,以便将其写入 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

请帮忙

试试这个:

 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()/1000);
    }

而不是 returning

return Long.toHexString(date.getTime());

Return 关注

return Long.toHexString(date.getTime()/1000);

正如@shmosel 正确指出的那样,date.getTime() return 时间以毫秒为单位,如果您想要 8 位十六进制格式,则需要将其转换为第二种格式。

可以找到return类型的日期here

import java.util.Calendar;
import java.util.Date;
public class Date {
    public static void main(final String[] args)
    {
    final Calendar cal = Calendar.getInstance();
    cal.set(Calendar.DATE, 15);
    cal.set(Calendar.MONTH, Calendar.DECEMBER);
    cal.set(Calendar.YEAR, 2005);
    cal.set(Calendar.HOUR, 17);
    cal.set(Calendar.MINUTE, 35);
    cal.set(Calendar.SECOND, 20);
    final Date date = cal.getTime();

    System.out.printf("Date %s is encoded as: %s\n", date, Long.toHexString(date.getTime()));
    // decode with: new Date(Long.parseLong("1082f469308", 16))
}

}