java格式化unix时间戳_Java将Unix时间戳转换成指定格式日期

参考文章: Java与Unix时间戳的相互转换          Java时间和时间戳的相互转换

我个人在实际工作中,在进行RFID标签开发时,遇到了需要将RFID标签传送的一组数据,解析成Java语言所表达的相关信息。

RFID 传送的16进制数据为:-----------------------------------------------------------------------------

Buff | 0 1 2 3 4 5 6 7 8 9 A B C D E F | 0123456789ABCDEF

---------+-------------------------------------------------+-----------------

00000000 | 31 4E 00 3D 2F 69 6F 74 70 2F 52 46 49 44 2D 35 | 1N.=/iotp/RFID-5

00000010 | 38 2D 36 39 2D 36 43 2D 35 38 2D 39 37 2D 44 41 | 8-69-6C-58-97-DA

00000020 | 2F 73 74 61 74 75 73 5F 64 61 74 61 2F 52 46 49 | /status_data/RFI

00000030 | 44 2F 69 6E 76 65 6E 74 6F 72 79 5F 64 61 74 61 | D/inventory_data

00000040 | 31 09 E3 01 5A D7 F5 36 06 EF B0 10 20 20 69 03 | 1.c.ZWu6.o0. i.

-----------------------------------------------------------------------------

其中最后一行的09开始数据为一次接收数据的mqtt payload

09 E3 01 5A D7 F5 36 06 EF B0 10 20 20 69 03

其中:

09 为 devicetype

E3 为 rssi

01 为 接收的天线号

5AD7F536 是时间戳 1524102454 =》 2018/4/19 9:47:34

06 为EPC长度

EFB010202069为标签的EPC值 ---> RFID的EPC值为唯一值

03 为GPI状态

其中,在对"5AD7F536"这组数据解析时,由于不知道RFID传递的“5AD7F536”数据需要以UNIX时间戳格式进行解析,为此在这里浪费了很多时间。 与RFID标签厂商工程师交流后,知道RFID传递的“5AD7F536”数据在Java中需要以UNIX时间戳格式解析。之后,得到了正确的时间。

以下是代码分享,需要注意的是:在Java中,对16进制数据以UNIX时间戳格式解析时,Long.valueOf()需要乘以1000,即:     long time = Long.valueOf("5AD7F536", 16) * 1000package com.example.test;

import java.text.SimpleDateFormat;

import java.util.Date;

public class test_demo2 {

public static void main(String[] args) {

// 5AD7F536

// FFFFFFFF

long timeLong2 = Long.valueOf("5AD7F536", 16) * 1000;

System.out.println(timeLong2);

// 初始化日期类

Date date = new Date();

// 设置时间

date.setTime(timeLong2);

// 设置日期格式

SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

// 输出显示

System.out.println("格式化输出时间为:" + sf.format(date));

}

}

解析后结果为:

7cb230c8805dee0803a25855e974bf5a.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用Java中的`java.util.Date`类的`getTime()`方法将日期转换为时间戳。 例如: ``` import java.util.Date; public class Main { public static void main(String[] args) { // 创建一个日期对象 Date date = new Date(); // 获取当前日期对应的时间戳 long timeStamp = date.getTime(); System.out.println(timeStamp); } } ``` 运行上述代码会输出当前时间对应的时间戳。 注意:时间戳是从1970年1月1日 00:00:00 GMT开始计算的毫秒数,所以输出的值是从1970年1月1日开始到当前时间的毫秒数。 ### 回答2: 在Java中,将Date日期格式转换为时间戳可以使用两种方法。 方法一:使用getTime()方法 Date类中有一个可用于获取时间戳的方法getTime()。该方法返回的是从1970年1月1日0时0分0秒(也称为Unix纪元)到当前Date对象表示的时间之间的毫秒数。将这个毫秒数转换为以秒为单位的时间戳,只需将其除以1000即可。 示例代码如下: ``` import java.util.Date; public class DateToTimestamp { public static void main(String[] args) { Date date = new Date(); long timestamp = date.getTime() / 1000; System.out.println("时间戳:" + timestamp); } } ``` 方法二:使用SimpleDateFormat类 SimpleDateFormat类是Java中用于处理日期格式化的类。可以使用它将Date对象格式化为特定的日期字符串,然后再将该字符串解析为时间戳。 示例代码如下: ``` import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateToTimestamp { public static void main(String[] args) { Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateString = sdf.format(date); try { Date parsedDate = sdf.parse(dateString); long timestamp = parsedDate.getTime() / 1000; System.out.println("时间戳:" + timestamp); } catch (ParseException e) { e.printStackTrace(); } } } ``` 以上是将Date日期格式转换为时间戳的两种方法,可以根据实际需求选择适合的方法进行使用。 ### 回答3: 在Java中,可以使用`java.util.Date`和`java.sql.Timestamp`类来处理日期时间戳。为了将一个日期转换为时间戳,可以按照以下步骤进行操作: 1. 首先,创建一个`Date`对象,表示要转换的日期。例如,`Date date = new Date();`可以创建一个表示当前日期和时间的对象。 2. 接下来,可以使用`getTime()`方法来获取日期对象的时间戳。这个方法返回一个`long`类型的值,表示从1970年1月1日00:00:00 GMT以来的毫秒数。 ```java long timestamp = date.getTime(); ``` 3. 如果需要将时间戳存储到数据库中,可以使用`java.sql.Timestamp`类来处理。可以使用`Timestamp`的构造函数将时间戳转换为`Timestamp`对象。 ```java Timestamp timestamp = new Timestamp(date.getTime()); ``` 4. 如果需要将时间戳转换回日期,可以使用`Timestamp`的`getTime()`方法来获取时间戳的毫秒数,并将其传递给`Date`的构造函数。 ```java Date date = new Date(timestamp.getTime()); ``` 注意:由于`java.util.Date`和`java.sql.Timestamp`类都属于`java.util`包,因此需要在代码中引入它们的类。 使用上述方法,可以很容易地将Java中的日期对象转换为时间戳,并且可以根据需要进行相反的转换。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值