【java笔记】Date与String的转换
===============================================
2021/4/15_第2次修改 ccb_warlock
更新说明:
2021/4/15:
1.细化了转换格式;
===============================================
最近整理了公司的java代码,发现业务中经常使用时间转换,且写法多种多样,故针对时间转换单独做个整理。
结合多个java项目看,虽然jdk 8开始引入了新的日期、时间类型LocalDate、LocalDateTime,但可能是出于ORM兼容性的考虑,几个项目中多数时间类型还是使用Date(java.util),所以这里的时间类型还是以Date举例。
获取当前时间
常见的方法是new一个对象
Date now = new Date();
但是jdk8开始建议使用Calendar来取时间,故下面的例子大都使用Calendar。
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();
Date -> String
1)4位年-2位月-2位日(yyyy-MM-dd)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String s = sdf.format(cal.getTime());
控制台输出:
2021-04-15
2)4位年-2位月-2位日 24小时制(yyyy-MM-dd HH:mm:ss)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String s = sdf.format(cal.getTime());
控制台输出:
2021-04-15 00:51:13
3)4位年-2位月-2位日 12小时制(yyyy-MM-dd hh:mm:ss aa)
// AM/PM(英文) SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss aa", Locale.ENGLISH"); String s = sdf.format(cal.getTime());
控制台输出:
2021-04-15 00:51:13 AM
// 上午/下午(中文) SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss aa", Locale.CHINESE"); String s = sdf.format(cal.getTime());
控制台输出:
2021-04-15 00:51:13 上午
4)4位年-2位月-2位 星期X(yyyy-MM-dd EEEE)
// 星期X(英文全称) SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd EEEE", Locale.ENGLISH); String s = sdf.format(cal.getTime());
控制台输出:
2021-04-15 Thu
// 星期X(英文简称) SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd E", Locale.ENGLISH); String s = sdf.format(cal.getTime());
控制台输出:
2021-04-15 Thursday
// 星期X(中文) SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd E", Locale.CHINESE); String s = sdf.format(cal.getTime());
控制台输出:
2021-04-15 星期四
String -> Date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = sdf.parse("2021-4-15 00:31:05");