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

时间:2017-07-17 05:00:53

标签: java android hex iot

我需要用十六进制代码转换日期和时间,以便在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

请帮忙

3 个答案:

答案 0 :(得分:2)

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))
}

}

答案 1 :(得分:0)

试试这个:

 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);
    }

答案 2 :(得分:0)

而不是返回

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

返回

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

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

可以找到日期的返回类型here