@[TOC]日期转换、格式化
日期格式化——DateFormat/SimpleDateFormat
DateFormat 是日期/时间格式化子类的抽象类。其子类(如 SimpleDateFormat)能够进行格式化(也就是日期→文本)、解析(文本→日期)和标准化日期。
在创建 DateFormat 对象时不能使用 new 关键字,而应该使用 DateFormat 类中的静态方法 getDateInstance(),示例代码如下:
// Date和字符串相互转化(字符串转换为Date类型时,有汉字的字符串可以使用0或1模式,没汉字的可以使用默认、2、3模式)
// 默认格式化模式
// val df = DateFormat.getDateInstance()
// val str1 = df.format(new Date()) // 2021-11-11
// val date = df.parse("2021-11-11") // Thu Nov 11 00:00:00 CST 2021
// 0代表的格式化模式
// val df = DateFormat.getDateInstance(0)
// val str1 = df.format(new Date()) // 2021年11月11日 星期四
// val date = df.parse("2021年11月11日 星期四") // Thu Nov 11 00:00:00 CST 2021
// 1代表的格式化模式
// val df = DateFormat.getDateInstance(1)
// val str1 = df.format(new Date()) // 2021年11月11日
// val date = df.parse("2021年11月11日 星期四") // Thu Nov 11 00:00:00 CST 2021
// 2代表的格式化模式
// val df = DateFormat.getDateInstance(2)
// val str1 = df.format(new Date()) // 2021-11-11
// val date = df.parse("2021-11-11") // Thu Nov 11 00:00:00 CST 2021
// 3代表的格式化模式,无其他模式
// val df = DateFormat.getDateInstance(3)
// val str1 = df.format(new Date()) // 21-11-11
// val date = df.parse("2021-11-11") // Thu Nov 11 00:00:00 CST 2021
// SimpleDateFormat使用
val sf = new SimpleDateFormat("yyyy-MM-dd")
val date = sf.parse("2021-11-11") // Thu Nov 11 00:00:00 CST 2021
val str = sf.format(new Date()) // 2021-11-11
val sf2 = new SimpleDateFormat("yyyyMMdd")
val date1 = sf2.parse("20211111") // Thu Nov 11 00:00:00 CST 2021
val str1 = sf2.format(new Date()) // 20211111
// 给定一个月的其中一个日期,获取所在月的第一天和最后一天
val cal = Calendar.getInstance()
cal.setTime(date1)
cal.set(Calendar.DAY_OF_MONTH, 1) // 变换第二个参数获取月的相应的第几天,但这种写法会和roll()方法相互干涉
println(new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime())) // 月第一天 2021-11-01
cal.roll(Calendar.DAY_OF_MONTH, -1)
println(new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime())) // 月最后一天 2021-11-30