MEC@JavaSE@基础篇@笔记11@日期类:Date,DateFormat;日历类:Calendar

it2023-09-25  78

一、Date类

为什么要使用Date类?

String date1 = "2020-10-18"; String date2 = "2020-10-28"; ​ //date2 - date1 不行。 //所以我们要学习Date类。

Date 类表示特定的瞬间,精确到毫秒。

它允许把日期解释为年、月、日、时、分和秒值。

年:正常年份值

月: 0 至 11 整数表示;0 是一月、1 是二月等等;因此 11 是十二月。

日:1 至 31 表示。(一月中的某天)。

时:0至23

分:0至59

秒:0至59

周:0至6 0周日

毫秒值的概念和作用(了解-扩展)

1秒=1000毫秒 1 天 = 24 × 60 × 60 = 86400 秒 = 86400 * 1000 = 86400000毫秒 -------------------------------------------------------------- 时间原点:0毫秒的时间点 1970 年 1 月 1 日 00:00:00 英国格林威治的时间(世界标准时间) 中国:东八区 标准时间+8个小时的时差 1970 年 1 月 1 日 08:00:00 把当前日期和时间转换为毫秒值:就是当前时间和时间原点的一个差值     当前时间(2020年8月10日 11:21:33)-时间原点(1970 年 1 月 1 日 00:00:00) = 1597029762998

Date类的构造方法和成员方法

构造方法摘要说明Date()分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。Date(long date)1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。long getTime()返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

代码示例

import java.util.Date; ​ /* Date类:是一个日期类 ​ 构造方法: Date(); Date(long l); ​ long getTime(); 得到1970-1-1 00:00:00 到当前系统时间的时间毫秒值 */ public class TestDate { public static void main(String[] args) { method2(); } ​ /* long getTime(); 得到1970-1-1 00:00:00 到当前系统时间的时间毫秒值 */ private static void method3() { Date date = new Date(); System.out.println(date.getTime()); //1602990270976 } ​ /* Date(long l); 有参构造 参数是毫秒值 CST: 中国标准时间 */ public static void method2(){ //创建Date日期对象 Date date = new Date(1602990270976L); System.out.println(date); //Sun Oct 18 10:59:40 CST 2020 } ​ /* Date(); 无参构造 CST: 中国标准时间 */ public static void method1(){ //创建Date日期对象 Date date = new Date(); System.out.println(date); //Sun Oct 18 10:59:40 CST 2020 } }

二、DateFormat

1.DateFormat类介绍(了解)

DateFormat作用:

格式化(也就是日期 -> 文本)

解析(文本-> 日期)

方法说明String format(Date date)参数传递Date日期,把日期格式化为符合模式的字符串Date parse(String source)参数传递字符串,把符合模式的字符串解析为Date日期 DateFormat类本身还是一个抽象类,无法直接创建对象使用,需要使用DateFormat类的子类创建对象使用 java.text.SimpleDateFormat extends DateFormat类 SimpleDateFormat类的构造方法: SimpleDateFormat(String pattern)          用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。    参数: String pattern:传递日期和时间的模式 在模式中写y代表年        在模式中写M代表月        在模式中写d代表日        在模式中写H代表时        在模式中写m代表分        在模式中写s代表秒        "yyyy-MM-dd HH:mm:ss" "2020-08-10 11:56:03"        "yyyy年MM月dd日 HH时mm分ss秒"        "yyyy/MM/dd HH:mm:ss"       注意: 1.表示模式的字母不能随便写(y代表年,M代表月...),表示年月日时分秒的连接符号可以随意写(-,/...)    2.表示模式的字母严格区分大小写    

2.SimpleDateFormat类的常用方法

代码示例

import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; ​ ​ /* DateFormat类:它是一个抽象类。不能new String format(Date date) 将日期转成字符串格式。 Date parse(String source) 将字符串转成日期格式。 ​ SimpleDateFormat是DateFormat的子类。 */ public class TestDateFormat { public static void main(String[] args) throws ParseException { method2(); } ​ /* Date parse(String source) 将字符串转成日期格式。 */ public static void method2() throws ParseException { Scanner sc = new Scanner(System.in); System.out.print("请输入日期(yyyy-MM-dd):"); String d = sc.next(); // 2020-10-18 ​ //创建SimpleDateFormat对象,把字符串转换为日期类型 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date = sdf.parse(d); ​ System.out.println(date); //Sun Oct 18 00:00:00 CST 2020 ​ } ​ /* SimpleDateFormat(String pattern) 用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。 ​ new SimpleDateFormat(pattern); 参数: String pattern:传递日期和时间的模式 在模式中写y代表年 在模式中写M代表月 在模式中写d代表日 在模式中写H代表时 在模式中写m代表分 在模式中写s代表秒 */ public static void method1(){ //创建日期对象 Date date = new Date(); System.out.println(date); ​ //使用SimpleDateFormat对象,把日期转换为字符串格式输出 // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss"); String d = sdf.format(date);// 将日期转成字符串格式。 ​ System.out.println(d); //2020年10月18日 11:20:21 } }

 

三、Calendar类

1.Calendar类介绍&创建对象的方式

概述:

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法。

创建对象:

//对象表示的是系统当前时间 Calendar c = Calendar.getInstance();

示例:

import java.util.Calendar; ​ public class TestCalender { public static void main(String[] args) { //创建日历对象 Calendar c = Calendar.getInstance(); System.out.println(c); } }

输出结果:

java.util.GregorianCalendar[time=1603003120822,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2020,MONTH=9,WEEK_OF_YEAR=43,WEEK_OF_MONTH=4,DAY_OF_MONTH=18,DAY_OF_YEAR=292,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=2,HOUR_OF_DAY=14,MINUTE=38,SECOND=40,MILLISECOND=822,ZONE_OFFSET=28800000,DST_OFFSET=0]

 

常用方法:

方法说明int get(int field)获取某个字段的值void set(int field,int value)设置某个字段的值void add(int field,int amount)偏移某个字段的值(在原有的基础上加减)

2.Calendar类中的常用成员方法

/* Calendar类中的常用成员方法(重点) int get(int field) 获取指定日历字段的值 void set(int field, int value) 将给定的日历字段设置为给定值 void add(int field, int amount) 把指定的日历字段,增加|减少指定的值 以上这些方法的参数(int field),传递指定的日历字段,这些字段在Calendar类中被定义为了常量 年:public final static int YEAR = 1; 月:public final static int MONTH = 2; 日:public final static int DATE = 5; 日:public final static int DAY_OF_MONTH = 5; 时:public final static int HOUR = 10; 分:public final static int MINUTE = 12; 秒:public final static int SECOND = 13; 星期:public final static int DAY_OF_WEEK = 7; */ import java.util.Calendar; ​ public class TestCalender { public static void main(String[] args) { show4(); } ​ //void add(int field,int amount) 在原有的基础上加/减 private static void show4() { Calendar c = Calendar.getInstance(); //处理年 c.add(Calendar.YEAR,-1); //处理月份 c.add(Calendar.MONTH,2); //处理日 c.add(Calendar.DATE,25); ​ //得到年 int year = c.get(Calendar.YEAR); System.out.println(year+"年"); ​ //得到月 int month = c.get(Calendar .MONTH); System.out.println((month+1)+"月"); ​ //得到日 int date = c.get(Calendar.DATE); System.out.println(date+"日"); } ​ //void set(int field,int value)设置某个字段的值 private static void show3() { Calendar c = Calendar.getInstance(); c.set(Calendar.YEAR,8888); c.set(Calendar.MONTH,11); c.set(Calendar.DATE,35); ​ System.out.println(c.get(Calendar.YEAR)+"年"); System.out.println((c.get(Calendar.MONTH)+1)+"月"); System.out.println(c.get(Calendar.DATE)+"日"); } ​ //get方法获取日历字段的数据 /* get方法的参数: public final static int YEAR = 1; 年 public final static int MONTH = 2; 月 public final static int DATE = 5; 日 public final static int DAY_OF_MONTH = 5; public final static int DAY_OF_WEEK = 7; 星期 0~6 public final static int DAY_OF_WEEK_IN_MONTH = 8; 本月的第几周 public final static int HOUR = 10; public final static int MINUTE = 12; public final static int SECOND = 13; */ private static void show2() { //创建日历对象 Calendar c = Calendar.getInstance(); //得到年 int year = c.get(Calendar.YEAR); System.out.println(year+"年"); ​ //得到月 int month = c.get(Calendar .MONTH); System.out.println((month+1)+"月"); ​ //得到日 int date = c.get(Calendar.DATE); System.out.println(date+"日"); ​ //得到时分秒 //System.out.println(c.get(Calendar.HOUR)+"时"+c.get(Calendar.MINUTE)+"分"+c.get(Calendar.SECOND)+"秒"); System.out.println(c.get(Calendar.HOUR_OF_DAY)+"时"+c.get(Calendar.MINUTE)+"分"+c.get(Calendar.SECOND)+"秒"); ​ System.out.println("星期:"+(c.get(Calendar.DAY_OF_WEEK)-1)); ​ System.out.println(c.get(Calendar.DAY_OF_WEEK_IN_MONTH)); } ​ //创建日历对象 public static void show1(){ //创建日历对象 Calendar c = Calendar.getInstance(); System.out.println(c); } }

 

 

 

 

 

 

 

最新回复(0)