SimpleDateFormat
- 构造方法
成员方法
- format
- parse
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /* SimpleDateFormat 类: 简单的格式化时间的一个类 构造方法: public SimpleDateFormat(); public SimpleDateFormat(String parrent); 成员方法: format 格式化日期输出字符串 parse 输入字符串转换为日期 */ public class Demo02 { // 此处为抛出异常,之后会讲 public static void main(String[] args) throws ParseException { // 构造对象 SimpleDateFormat sdf = new SimpleDateFormat(); System.out.println(sdf); // 使用传入的规则创建一个sdf对象 SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd'\t'HH:mm:ss"); //将日期格式化为字符串 Date d1 = new Date(); //空参构造格式化 String format = sdf.format(d1); // 带时间格式的构造格式化 String format2 = sdf1.format(d1); System.out.println(format); // "22-1-25 上午11:38" // dateString ds1 = "Tue Jan 25 11:15:38 CST 2022"; System.out.println(format2);// "2022-01-25 11:39:14" //将字符串格式化为日期 // 将字符串转换为Date类型时,要注意sdf对象的时间格式,要和字符串的格式相匹配,否则就会转换失败而报错 // 此处系统判断我们可能出现异常,所以强制我们处理异常,或者抛出异常 // Date parse = sdf1.parse("22-1-25 上午11:38"); Date parse = sdf1.parse("2022-01-25 11:39:14"); System.out.println(parse); } }
/* 需求 • 定义工具类DateUtils, 该类有两个方法: date2String(), string2Date(), 分别用来格式化, 解析日期. • 在测试类中, 测试上述的两个方法. • 注意: 解析日期字符串时, SImpleDateFormat对象的模板要和被解析的字符串格式保持一致. */ public class Demo03 { public static void main(String[] args) throws ParseException { // Date>> String Date d1 = new Date(); System.out.println(DateUtils.Date2String(d1, "yyyy年MM月dd日 HH时:mm分")); // String>> Date String dateStr = "2022年01月25日 11时:56分"; Date d2 = DateUtils.String2Date(dateStr, "yyyy年MM月dd日 HH时:mm分"); System.out.println(d2); } }
package cn.itcast.demo04_Date; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateUtils { //工具类的思想: //1. 构造方法私有 private DateUtils(){ } //2. 所有方法静态 public static String Date2String(Date date, String parrent) { // 创建一个sdf对象 SimpleDateFormat sdf = new SimpleDateFormat(parrent); //格式化 String dateStr = sdf.format(date); //返回结果 return dateStr; } public static Date String2Date(String dateStr, String parrent) throws ParseException { // 创建一个sdf对象 SimpleDateFormat sdf = new SimpleDateFormat(parrent); // 解析 Date date = sdf.parse(dateStr); // 返回 return date; } }
Calendar类
成员变量
- YEAR
- MONTH
- DATE
- DAYOFMONTH
- DAYOFWEEK
成员方法
- getInstalce
- get
- set
- add
import java.util.Calendar; /* Calendar 帮助我们去记录和使用时间的一个类,目前已经基本替换Date, JDK1.1 那为什么不删除Date呢??? 因为jdk要进行向下兼容 例如1.8版本要兼容1,8之前的所有版本,所以不能删除 构造法方法: 1.public calendar(); 2.public calendar(时区, 语言环境); 如果使用上边这种构造方式,会自动传入系统时区和语言环境 1. 成员变量 1. YEAR 2. MONTH 3. DATE 4. DAYOFMONTH 5. DAYOFWEEK 2. 成员方法 1. getInstalce 2. get 3. set 4. add 5. */ public class Demo01 { public static void main(String[] args) { // Calendar 是一个抽象类,不能进行实例化,但是我们想使用他 // 在类中给了一个getinstance这个方法,内部返回了一个Calendar的子类对象. // 如果想要使用Calendar构造方法创建一个类,就需要实现其所有抽象方法. Calendar calendar = Calendar.getInstance(); System.out.println(calendar); // 获取当前的一些时间(静态变量) // Calendar.DATE 这个是给 Calendar添加或者删减数据用 // System.out.println(Calendar.DATE); // 5 // System.out.println(Calendar.MONTH); // 2 // System.out.println(Calendar.YEAR); // 1 // System.out.println(Calendar.WEEK_OF_MONTH); // 4 // 计算机中month中0代表的是1月, 1代表2月 以此类推 // 星期,月份在Calendar类中都有对应的常量代表 calendar.set(2022, 0, 25); System.out.println(calendar.get(Calendar.DAY_OF_YEAR)); //使用add 给DATE 添加4天 calendar.add(Calendar.DATE, 4); calendar.add(Calendar.MONTH, -4); // 获取添加4天后是这一年的第几天 System.out.println(calendar.get(Calendar.DAY_OF_YEAR)); // 如果再Calendar使用过程中,进行了一系列操作将日期,月份或者年份进行减少或增加进入了下一个月年 都会进行记录 // 所以我们再开发中你可以使用Calendar进行计算. System.out.println(calendar.get(Calendar.YEAR)); // 2021年 } }
案例:
public static void main(String[] args) { //1. 创建一个Scanner对象 Scanner sc = new Scanner(System.in); //2.提示并获取用户输入的年份 System.out.println("请输入您要查询的年份:"); int year = sc.nextInt(); //3.创建一个calendar对象,将年份传入 Calendar c1 = Calendar.getInstance(); //4.将3月1日传入Calendar对象 ,此处是3月1日,所以MONTH应该传2 c1.set(Calendar.YEAR, year); c1.set(Calendar.MONTH, 2); c1.set(Calendar.DATE, 1); //5.从当前calendar对象中减去一天, c1.add(Calendar.DATE, -1); //6.获取当月的日期,就是当年2月份的天数 System.out.println("二月份的天数是:" + c1.get(Calendar.DATE)); }