前言
如果用java.util.Date来直接输出日期,格式会比较固定,不够灵活。那如何设置输出日期的格式呢?又如何来按照自己想要的格式来输出日期呢?
日期转字符串
首先我们先要知道java中年月日等时间用什么字母可以替代
y 代表年
M 代表月
d 代表日
H 代表24进制的小时
h 代表12进制的小时
m 代表分钟
s 代表秒
S 代表毫秒
代码如下:
package date2;
import java.util.Date;
import java.text.SimpleDateFormat;
public class TestDate {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); //制定输出格式
Date d = new Date();
String str = sdf.format(d); //将日期转换为字符串且格式按照之前制定的
System.out.println("当前时间通过 yyyy-MM-dd HH:mm:ss SSS 格式化后的输出: "+str);
//下面同理
SimpleDateFormat sdf1 =new SimpleDateFormat("yyyy-MM-dd" );
Date d2 = new Date();
String str2 = sdf1.format(d2);
System.out.println("当前时间通过 yyyy-MM-dd 格式化后的输出: "+str2);
}
}
我们创建SimpleDateFormat对象用并且用自己想要的格式来初始化它,随后创建日期类,将日期类按照给定的格式转换成字符串,最后打印。
结果:
当前时间通过 yyyy-MM-dd HH:mm:ss SSS 格式化后的输出: 2019-05-19 16:44:45 812
当前时间通过 yyyy-MM-dd 格式化后的输出: 2019-05-19
知道了日期转换为字符串,那字符串又如何转换为日期呢?
字符串转日期
字符串想要转换为日期类首先要确保字符串中的模式(yyyy/MM/dd HH:mm:ss)需要和日期格式保持一致,如果不一样就会抛出解析异常ParseException。
具体代码:
package date2;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDate2 {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String str = "2019/5/19 13:10:12";
try { //String转换为日期
Date d = sdf.parse(str);
System.out.printf("字符串 %s 通过格式 yyyy/MM/dd HH:mm:ss %n转换为日期对象: %s",str,d.toString());
System.out.println();
System.out.printf("字符串 %s 通过格式 yyyy/MM/dd HH:mm:ss %n转换为日期对象: %s",str,String.valueOf(d)); //这里用valueof的效果和tostring效果相当
System.out.println();
}catch(java.text.ParseException e) {
e.printStackTrace();
}
}
}
首先还是要制定日期格式,然后将字符串初始化为给定的格式的模式,随后尝试进行转换,初始化日期类需要先指定格式,然后将日期转换为字符串(这里tostring和String.valueOf效果相当)
结果:
字符串 2019/5/19 13:10:12 通过格式 yyyy/MM/dd HH:mm:ss
转换为日期对象: Sun May 19 13:10:12 GMT+08:00 2019
字符串 2019/5/19 13:10:12 通过格式 yyyy/MM/dd HH:mm:ss
转换为日期对象: Sun May 19 13:10:12 GMT+08:00 2019