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.timePackage 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这两个方法。如DateTimeFormatter中:

// 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

原文地址:https://www.cnblogs.com/mingmingcome/p/9495240.html

时间: 2024-10-07 05:12:04

String、Date和Timestamp的互转的相关文章

Linux下对date和timestamp的互转

http://www.linuxidc.com/Linux/2010-09/28537.htm linux下对date和timestamp的互转 1. date 到 timestamp:$ date -d '2009-12-01 23:20' +%s    12596808002. timestamp 到 date$ date -d '1970-01-01 1259680800 sec utc'          Tue Dec  1 23:20:00 CST 2009 3. timestamp

String与Date、Timestamp互转

一.String与Date(java.util.Date)互转 1.1 String -> Date String dateStr = "2010/05/04 12:34:23"; Date date = new Date(); //注意format的格式要与日期String的格式相匹配 DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); try { date = sdf.parse(da

Java:String和Date、Timestamp之间的转换

一.String与Date(java.util.Date)互转 1.1 String -> Date Java代码   String dateStr = "2010/05/04 12:34:23"; Date date = new Date(); //注意format的格式要与日期String的格式相匹配 DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); try { date = sdf

String和Date、Timestamp之间的转换

Java:String和Date.Timestamp之间的转换 http://yunnick.iteye.com/blog/1074495 一.String与Date(java.util.Date)互转 1.1 String -> Date String dateStr = "2010/05/04 12:34:23"; Date date = new Date(); //注意format的格式要与日期String的格式相匹配 DateFormat sdf = new Simple

关于String、date、Timestamp之间的相互转换问题

一.String与Date(java.util.Date)互转 1.1 String -> Date String dateStr = "2010/05/04 12:34:23"; Date date = new Date(); //注意format的格式要与日期String的格式相匹配 DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); try { date = sdf.parse(da

总结的一些json格式和对象/String/Map/List等的互转工具类

原文:总结的一些json格式和对象/String/Map/List等的互转工具类 源代码下载地址:http://www.zuidaima.com/share/1550463691508736.htm 总结的一些json格式和对象/String/Map/List等的互转工具类,有需要的可以看看,需要引入jackson-core-asl-1.7.1.jar.jackson-jaxrs-1.7.1.jar.jackson-mapper-asl-1.7.1.jar这三个jar包 package com.

Calendar /String /Date 转换

Calendar 转化 String Calendar calendat = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String dateStr = sdf.format(calendar.getTime()); String 转化Calendar String str="2016-6-25"; SimpleDateFormat sdf=

String Date Calendar之间的转换

1.Calendar 转化 String 1 Calendar calendat = Calendar.getInstance(); 2 3 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 4 5 String dateStr = sdf.format(calendar.getTime()); 2.String 转化Calendar 1 String str="2012-5-27"; 2 3 Si

mysql之DATETIME、DATE和TIMESTAMP简单了解

MySQL5的日期类型有三种:DATETIME.DATE和TIMESTAMP,除了DATE用来表示一个不带时分秒的是日期,另外两个都带时分秒.TIMESTAMP还可以精确到毫秒. DATE 是 年月日YYYY-MM-DD, DATETIME 是 年月日时分秒YYYY-MM-DD HH:MM:SS, TIMESTAMP是 年月日时分秒YYYY-MM-DD HH:MM:SS. 然后就是区别, DATETIME支持范围:'1000-01-01 00:00:00'到'9999-12-31 23:59:5