String、Date和Timestamp的互转
begin 2018年8月17日19:09:49
String、Date和Timestamp的互转
String和Date的互转
关于String和Date的互转,在java8后会有不同。因为java8添加java.time包及子包,其中主要API是关于日期、时间、时刻和时间段及它们之间的转换和打印输出,比较重要一点的是java.time中LocalDate、LocalTime、LocalDateTime都是线程安全的。有兴趣可以查看官网的描述:Package java.time和Package java.time.format。
java8前是java.text.SimpleDateFormat类中的两个方法:
// String -> Date
public Date parse(String source) throws ParseException;
// Date -> String
public final String format(Date date);
java8中java.time.format.DateTimeFormatter类中:
// 静态工厂方法构造DateTimeFormatter对象
public static DateTimeFormatter ofPattern(String pattern);
java.time中几乎所有的类都有parse、format这两个方法。如类LocalDataTime中:
// String -> DateTime的天然转化器
public static LocalDateTime parse(CharSequence text);
public static LocalDateTime parse(CharSequence text, DateTimeFormatter formatter);
// DataTime -> String
public String format(DateTimeFormatter formatter);
// 1.1 String -> Date
@Test
public static void testStringToDate() throws ParseException {
String str = "2018/08/16 20:07:56";
// 1.1.1 java8前
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = sdf.parse(str); // Thu Aug 16 20:07:56 CST 2018
System.out.println(date);
// 1.1.2 java8 默认格式:yyyy-MM-dd'T'HH:mm:ss(即2007-12-03T10:15:30)
DateTimeFormatter fommatter =DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.parse(str, fommatter); // 2018-08-16T20:07:56
System.out.println(dateTime);
}
// 1.2 Date -> String
@Test
public static void testDateToString() {
// 1.2.1 java8前
Date date = new Date();
// 1.2.1.1 直接打印,toString()方法在下面是多余的,只是为了显式地表示通过toString()方法转化为String,下同
System.out.println(date.toString()); // Fri Aug 17 17:06:41 CST 2018
// 1.2.1.2 格式化输出字符串
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str1 = sdf1.format(date); // 2018/08/17 17:06:41
String str2 = sdf2.format(date); // 2018-08-17 17:06:41
System.out.println(str1);
System.out.println(str2);
// 1.2.2 java8
LocalDateTime dateTime = LocalDateTime.now();
// 1.2.2.1 toString()
System.out.println(dateTime.toString()); // 2018-08-17T17:08:51.874
// 1.2.2.2 格式化输出字符串
// 2018/08/17 17:08:51
String str3 = dateTime.format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"));
// 2018-08-17 17:08:51.8
String str4 = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S"));
System.out.println("yyyy/MM/dd HH:mm:ss: " + str3);
System.out.println("yyyy-MM-dd HH:mm:ss.S: " + str4);
}
String和Timestamp的互转
// 2.1 String -> Timestamp
@Test
public static void testStringToTimestamp() throws ParseException {
// 2.1.1 参数为默认格式yyyy-[m]m-[d]d hh:mm:ss[.f...]
// timestamp in format yyyy-[m]m-[d]d hh:mm:ss[.f...]
// 时间戳格式是yyyy-[m]m-[d]d hh:mm:ss[.f...]。中括号部分可省略。[.f...]没有的话,会用".0"代替。
String str = "2018-08-16 20:07:56";
Timestamp ts = Timestamp.valueOf(str); //2018-08-16 20:07:56.0
System.out.println(ts);
// 2.1.2 参数为其他格式,需转化
String str1 = "2018/08/17 09:42:36.23";
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SS");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SS");
// 先按照原来的格式转化为Date
Date date = sdf1.parse(str1);
// 再按照默认格式转化为String
String str2 = sdf2.format(date);
// 最后调用Timestamp.valueOf转化为timestamp
Timestamp ts1 = Timestamp.valueOf(str2); // 2018-08-17 09:42:36.23
System.out.println(ts1);
// 2.1.3 参数为其他格式,需要转化(java8)
String str3 = "2018/08/17 09:42:36.12";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss.SS");
LocalDateTime dateTime = LocalDateTime.parse(str3, formatter);
Timestamp ts2 = Timestamp.valueOf(dateTime); // 2018-08-17 09:42:36.12
System.out.println(ts2);
}
// 2.2 Timestamp -> String
@Test
public static void testTimestampToString() {
// 2.2.1 toString()
// 2018-08-17 17:30:06.648
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
System.out.println(timestamp.toString());
// 2.2.1 格式化输出字符串
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
// 2018/08/17 17:30:06
String str = sdf.format(timestamp);
System.out.println(str);
}
String和Timestamp的互转
// 3.1 Date -> Timestamp
@Test
public static void testDateToTimestamp() {
Date date = new Date();
Timestamp timestamp = new Timestamp(date.getTime()); // 2018-08-17 17:43:09.796
System.out.println(timestamp);
}
// 3.2 Timestamp -> Date
@Test
public static void testTimestampToDate() {
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
// 3.2.1 直接赋值,Date是Timestamp父类
Date date = timestamp; // 2018-08-17 17:51:30.507
System.out.println(date);
// 3.2.2 创建新对象Date
date = new Date(timestamp.getTime());// Fri Aug 17 17:49:28 CST 2018
System.out.println(date);
}
参考:
Java:String和Date、Timestamp之间的转换
end 2018年8月17日20:43:22
String、Date和Timestamp的互转的更多相关文章
- linux下对date和timestamp的互转
1. date 到 timestamp: $ date -d '2009-12-01 23:20' +%s 12596808002. timestamp 到 date$ date -d '1970-0 ...
- String与Date、Timestamp互转
一.String与Date(java.util.Date)互转 1.1 String -> Date String dateStr = "2010/05/04 12:34:23&quo ...
- String和Date、Timestamp之间的转换
一.String与Date(java.util.Date)互转 1.1 String -> Date String dateStr = "2010/05/04 12:34:23&quo ...
- Java:String和Date、Timestamp之间的转
Java:String和Date.Timestamp之间的转 一.String与Date(java.util.Date)互转 1.1 String -> Date String dateStr ...
- Java:String和Date、Timestamp之间的转换
一.String与Date(java.util.Date)互转 1.1 String -> Date String dateStr = "2016-9-28 12:25:55" ...
- [java]String和Date、Timestamp之间的转换
一.String与Date(java.util.Date)互转 1.1 String -> Date Date date = DateFormat.parse(String str); St ...
- 【Java】String和Date、Timestamp之间的转换
首先,定义一个Format的日期格式: SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 一.S ...
- Java:String和Date、Timestamp之间的转换【转】
原文地址:http://yunnick.iteye.com/blog/1074495 一.String与Date(java.util.Date)互转 1.1 String -> Date Str ...
- String Date Calendar之间的转换
1.Calendar 转化 String Calendar calendat = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDa ...
随机推荐
- C# 编码规范、命名规则
1 规范目的 ……………………………………………………… 3 2 适用范围 ……………………………………………………… 3 3 代码注释 ……………………………………………………… 3 3.1 ...
- C#生成和识别二维码
用到外部一个DLL文件(ThoughtWorks.QRCode.dll),看效果 生成截图 识别截图 生成二维码后右键菜单可以保存二维码图片,然后可以到识别模式下进行识别,当然生成后可以用手机扫描识别 ...
- Python的生成器进阶玩法
Python的生成器进阶玩法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.yield的表达式形式 #!/usr/bin/env python #_*_coding:utf-8 ...
- 翻译:探索GLSL-用几何着色器(着色器库)实现法线可视化
翻译:探索GLSL-用几何着色器(着色器库)实现法线可视化 翻译自: Exploring GLSL – Normal Visualizer with Geometry Shaders (Shader ...
- JAVA多线程之线程的挂起与恢复(suspend方法与resume方法)
一,介绍 本文讨论JAVA多线程中,使用 thread.suspend()方法暂停线程,使用 thread.resume()恢复暂停的线程 的特点. 先介绍二个关于线程的基本知识: ①线程的执行体是r ...
- [整理]x=x++和x=++x
最近看java面试题,再次遇到x=x++,之前一直按照C语言中对自增运算符++的解释去理解.殊不知自己犯了严重的错误. (1)不同的语言的编译器,会导致相同的代码最终执行的结果不确定; (2)而且就算 ...
- requests(二): json请求中固定键名顺序&消除键和值之间的空格
继上一篇requests发送json请求的文章后,实际工作中遇到了以下2种情况. 1:服务端要求json字符串,键名的顺序固定 2.服务端对于接收到的json数据中,若key和value之间有空格, ...
- 统一过程模型(RUP/UP)
http://blog.sina.com.cn/s/blog_6a06f1b7010121hz.html 统一过程(RUP/UP,Rational Unified Process)是一种以用例驱动.以 ...
- MySQL用户密码过期登陆报错ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
今天接到主从复制失败告警,查看MySQL,发现MySQL能够登陆但是执行命令报错, ERROR 1820 (HY000): You must reset your password using ALT ...
- MySQL保存或更新 saveOrUpdate
1. 引子 在项目开发过程中,有一些数据在写入时候,若已经存在,则覆盖即可.这样可以防止多次重复写入唯一键冲突报错.下面先给出两个MyBatis配置文件中使用saveOrUpdate的示例 <! ...