java时间戳与Date相互转化
1、时间戳的定义
时间戳是指文件属性里的创建、修改、访问时间。
数字时间戳技术是数字签名技术一种变种的应用。在电子商务交易文件中,时间是十分重要的信息。在书面合同中,文件签署的日期和签名一样均是十分重要的防止文件被伪造和篡改的关键性内容。数字时间戳服务(DTS:digital time stamp service)是网上电子商务安全服务项目之一,能提供电子文件的日期和时间信息的安全保护。
编辑本段组成部分
时间戳(time-stamp)是一个经加密后形成的凭证文档,它包括三个部分:
(1)需加时间戳的文件的摘要(digest);
(2)DTS收到文件的日期和时间;
(3)DTS的数字签名。
一般来说,时间戳产生的过程为:用户首先将需要加时间戳的文件用Hash编码加密形成摘要,然后将该摘要发送到DTS,DTS在加入了收到文件摘要的日期和时间信息后再对该文件加密(数字签名),然后送回用户。
书面签署文件的时间是由签署人自己写上的,而数字时间戳则不然,它是由认证单位DTS来加的,以DTS收到文件的时间为依据。
2、时间戳转化为Date(or String)
1 //时间戳转化为Sting或Date 2 SimpleDateFormat format = newSimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 3 Long time=newLong(445555555); 4 String d = format.format(time); 5 Date date=format.parse(d); 6 System.out.println("Format To String(Date):"+d); 7 System.out.println("Format To Date:"+date);
运行结果:
1 Format To String(Date):1970-01-06 11:45:55 2 Format To Date:Tue Jan 06 11:45:55 CST 1970
3、Date(or String)转化为时间戳
1 //Date或者String转化为时间戳 2 SimpleDateFormat format = newSimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 3 String time="1970-01-06 11:45:55"; 4 Date date = format.parse(time); 5 System.out.print("Format To times:"+date.getTime());
运行结果:
1 Format To times:445555000
4、注意
定义SimpleDateFormat时newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");里面字符串头尾不能有空格,有空格那是用转换时对应的时间空格也要有空格(两者是对应的),比如:
1 //Date或者String转化为时间戳 2 SimpleDateFormat format = newSimpleDateFormat(" yyyy-MM-dd HH:mm:ss "); 3 String time="1970-01-06 11:45:55"; 4 Date date = format.parse(time); 5 System.out.print("Format To times:"+date.getTime());
运行结果(报错):
Exception in thread "main"Java.text.ParseException: Unparseable date: "1970-01-06 11:45:55"
改正:
//Date或者String转化为时间戳
1 SimpleDateFormat format = newSimpleDateFormat(" yyyy-MM-dd HH:mm:ss "); 2 String time=" 1970-01-06 11:45:55 ";//注:改正后这里前后也加了空格 3 Date date = format.parse(time); 4 System.out.print("Format To times:"+date.getTime());
运行结果:
1 Format To times:445555000
一、java中Date类中的getTime()是获取时间戳的,java中生成的时间戳精确到毫秒级别,而unix中精确到秒级别,所以通过java生成的时间戳需要除以1000。
二、下面是java代码
1 import java.text.ParseException; 2 import java.text.SimpleDateFormat; 3 import java.util.Date; 4 5 public class Baidu { 6 7 /** 8 * @param args 9 */ 10 public static void main(String[] args) { 11 try { 12 String time = "2011/07/29 14:50:11"; 13 Date date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").parse(time); 14 long unixTimestamp = date.getTime()/1000; 15 System.out.println(unixTimestamp); 16 } catch (ParseException e) { 17 e.printStackTrace(); 18 } 19 } 20 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!