大数据基础之常用API三
1. SimpleDateFormat
1.1 概念
SimpleDateFormat 是一个与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化和解析。
SimpleDateFormat类, 叫日期格式化类, 专门用来格式化和解析日期的.
- 格式化(日期 -> 文本), 即: Date -> String
- 解析(文本 -> 日期), 即: String -> Date
1.2 构造方法
public SimpleDateFormat()
解释: 根据空参构造, 创建SimpleDateFormat类的对象.
public SimpleDateFormat(String pattern)
解释: 根据给定的模板, 创建其对应的SimpleDateFormat类的对象.
1.3 成员方法
public final String format(Date date)
解释: 用来格式化日期的.
public Date parse(String source)
解释: 用来解析字符串形式的日期的.
importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Date;/*
SimpleDateFormat 类: 简单的格式化时间的一个类
构造方法:
public SimpleDateFormat();
public SimpleDateFormat(String parrent);
成员方法:
format 格式化日期输出字符串
parse 输入字符串转换为日期
*/publicclassDemo02{// 此处为抛出异常,之后会讲publicstaticvoidmain(String[] args)throwsParseException{// 构造对象SimpleDateFormat sdf =newSimpleDateFormat();System.out.println(sdf);// 使用传入的规则创建一个sdf对象SimpleDateFormat sdf1 =newSimpleDateFormat("yyyy-MM-dd'\t'HH:mm:ss");//将日期格式化为字符串Date d1 =newDate();//空参构造格式化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);}}
1.4 练习
• 定义工具类DateUtils, 该类有两个方法: date2String(), string2Date(), 分别用来格式化, 解析日期.
• 在测试类中, 测试上述的两个方法.
• 注意: 解析日期字符串时, SImpleDateFormat对象的模板要和被解析的字符串格式保持一致.
publicclassDemo03{publicstaticvoidmain(String[] args)throwsParseException{// Date>> StringDate d1 =newDate();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);}}
importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Date;publicclassDateUtils{//工具类的思想://1. 构造方法私有privateDateUtils(){}//2. 所有方法静态publicstaticStringDate2String(Date date,String parrent){// 创建一个sdf对象SimpleDateFormat sdf =newSimpleDateFormat(parrent);//格式化String dateStr = sdf.format(date);//返回结果return dateStr;}publicstaticDateString2Date(String dateStr,String parrent)throwsParseException{// 创建一个sdf对象SimpleDateFormat sdf =newSimpleDateFormat(parrent);// 解析Date date = sdf.parse(dateStr);// 返回return date;}}
2. Calendar类
2.1 概述
Calendar类叫: 日历类, 是方便我们操作日期的. 它里边的功能大多数是用来替代java.util.Date类的功能的.
2.2 构造方法
Calendar类可以理解为是工具类, 因为它是一个抽象类, 所以外界无法通过new的方式创建本类对象.
问题: 如何创建Calendar类的对象呢?
答案: 通过Calendar#getInstance()方法实现.
2.3 成员变量
public static final int YEAR
解释: 表示年份.
public static final int MONT
解释: 表示月份.
public static final int DATE
解释: 表示年中的某一天.
public static final int DAYOFMONTH
解释: 表示月中的某一天.
public static final int DAYOFWEEK
解释: 表示星期中的某一天.
2.4 成员方法
public static Calendar getInstance();
解释: 创建Calendar类型的子类对象.
public int get(int field)
解释: 根据日历字段, 获取其对应的值.
public void set(int year, int month, int day)
解释: 设置时间为指定的年, 月, 日.
public void add(int field, int count)
解释: 修改指定的时间为指定的偏移量, 例如: 往前推2天, 推3个月, 往后推2年.
importjava.util.Calendar;/*
Calendar 帮助我们去记录和使用时间的一个类,目前已经基本替换Date, JDK1.1
那为什么不删除Date呢??? 因为jdk要进行向下兼容 例如1.8版本要兼容1,8之前的所有版本,所以不能删除
*/publicclassDemo01{publicstaticvoidmain(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年}}
2.5 练习
publicstaticvoidmain(String[] args){//1. 创建一个Scanner对象Scanner sc =newScanner(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));}
版权归原作者 淼淼_喵 所有, 如有侵权,请联系我们删除。