java_时间戳与 Date_相互转化的实现代码
这里有新鲜出炉的 Java 函数式编程, 程序狗速度看过来!
Java 程序设计语言
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言, 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台 (即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se)) 的总称
本篇文章是对 java_时间戳与 Date_相互转化的实现代码进行了详细的分析介绍, 需要的朋友参考下如下
1 时间戳的定义
时间戳是指文件属性里的创建修改访问时间
数字时间戳技术是数字签名技术一种变种的应用在电子商务交易文件中, 时间是十分重要的信息在书面合同中, 文件签署的日期和签名一样均是十分重要的防止文件被伪造和篡改的关键性内容数字时间戳服务 (DTS:digital time stamp service) 是网上电子商务安全服务项目之一, 能提供电子文件的日期和时间信息的安全保护
时间戳 (time-stamp) 是一个经加密后形成的凭证文档, 它包括三个部分:
需加时间戳的文件的摘要(digest);
DTS 收到文件的日期和时间;
DTS 的数字签名
一般来说, 时间戳产生的过程为: 用户首先将需要加时间戳的文件用 Hash 编码加密形成摘要, 然后将该摘要发送到 DTS,DTS 在加入了收到文件摘要的日期和时间信息后再对该文件加密(数字签名), 然后送回用户
书面签署文件的时间是由签署人自己写上的, 而数字时间戳则不然, 它是由认证单位 DTS 来加的, 以 DTS 收到文件的时间为依据
2 时间戳转化为 Date(or String)
- // 时间戳转化为 Sting 或 Date
- SimpleDateFormat format = newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- Long time = newLong(445555555);
- String d = format.format(time);
- Date date = format.parse(d);
- System.out.println("Format To String(Date):" + d);
- System.out.println("Format To Date:" + date);
运行结果:
- Format To String(Date):1970-01-06 11:45:55
- Format To Date:Tue Jan 06 11:45:55 CST 1970
3Date(or String)转化为时间戳
- //Date 或者 String 转化为时间戳
- SimpleDateFormat format = newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String time = "1970-01-06 11:45:55";
- Date date = format.parse(time);
- System.out.print("Format To times:" + date.getTime());
运行结果:
Format To times:445555000
4 注意
定义 SimpleDateFormat 时 newSimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 里面字符串头尾不能有空格, 有空格那是用转换时对应的时间空格也要有空格(两者是对应的), 比如:
- //Date 或者 String 转化为时间戳
- SimpleDateFormat format = newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String time = "1970-01-06 11:45:55";
- Date date = format.parse(time);
- 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 转化为时间戳
- SimpleDateFormat format = newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String time = "1970-01-06 11:45:55"; // 注: 改正后这里前后也加了空格
- Date date = format.parse(time);
- System.out.print("Format To times:" + date.getTime());
运行结果:
Format To times:445555000
一 java 中 Date 类中的 getTime()是获取时间戳的, java 中生成的时间戳精确到毫秒级别, 而 unix 中精确到秒级别, 所以通过 java 生成的时间戳需要除以 1000
二下面是 java 代码
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- public class Baidu {
- /**
- * @param args
- */
- public static void main(String[] args) {
- try {
- String time = "2011/07/29 14:50:11";
- Date date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").parse(time);
- long unixTimestamp = date.getTime() / 1000;
- System.out.println(unixTimestamp);
- } catch(ParseException e) {
- e.printStackTrace();
- }
- }
- }
来源: http://www.phperz.com/article/18/0214/359482.html