20201012+袁鑫

学习日志:

知识总结:

日期和时间
Date

java.util.Date表示特定的时间,用来表示时间和日期,提供一系列操作。

​ 获取的是系统的时间和日期

​ 一天 = 24 * 60 * 60 = 86400 秒

​ 计算机保准是根据Greenwich(格林威治)标准时间(GMT),由于中国属于东八区,所以要比GMT时间早8个小时

类的所有方法Date接受或返回年,月,日,小时,分钟,和秒值,一下表述中使用:

  • y年代表整数y-1900。
  • 一个月由0到11的整数表示;0是1月,1是2月,等等,11是12月
  • 日期(月的一天)一通常的方式从1到31的整数表示。
  • 一个小时由0到23之间的整数表示。因此,从午夜到凌晨1点的时间是小时0,从中午到下午1点的小时是12小时。
  • 一般以0-59的整数表示minute。
  • 秒由0-61的整数表示;值60和61仅发生在闰秒上,甚至仅在实际上正确跟踪上正确跟踪闰秒的java实现中发生。由于目前引入闰秒的方式,在同一分钟内不会发生两个闰秒,但是本规范遵循ISO C的日期和时间约定。

在所有的情况下,为这些目的而提供的方法的论证不必在指定范围内;例如,可以将日期指定为1月32日,并将其解释为2月1日

成员变量

fastTime //保存Date 所表示的时间。

成员方法

boolean after(Date when) 测试次日起是否在指定日期之后

boolean before(Date when) 测试次日起是否在指定日期之前

boolean equals(object obj)比较两个日期相等

long getTime() 自1970年1月1日以来,一次日期为基准的00:00:00GMT的毫秒数

void setTime(long time) 设置此Date对象一表示1970年1月1日00:00:00GMT后的time毫秒的时间点

其中 toString() 的格式是: dow mon dd hh:mm:ss zzz yyyy

dow 是星期几( Sun, Mon, Tue, Wed, Thu, Fri, Sat )。

mon 是月( Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec )。

dd 是一个月的某天( 01 到 31 ),作为两位十进制数字。

hh 是一天的小时( 00 到 23 ),作为两位十进制数字。

mm 是一小时内的分钟( 00 至 59 ),为两位十进制数字。

ss 是分钟内的秒( 00 到 61 ),作为两位十进制数字。

zzz 是时区。 标准时区缩写包括通过方法 parse识别的缩写 。 如果时区信息不可用,那么 zzz 是 空的 - 也就是说,它根本没有字符。

年份 为 yyyy ,为四位十进制数字

Date实例时可变的

Date实例(对象)创建后,内部的毫秒值fastTime时可以改变的。

Calendar

java.util.Calendar是一个抽象类。可以为某一特定时刻和日历字段之间的转换的方法,以及用于操纵该日历的字段提供了方法,时间上的瞬间可以用毫秒值表示,该值是从1970年1月1日00:00:00GMT

由于该类是抽象类,所以不能直接实例化,在类中提供了一个方法Calendar.getInstane();这个方法返回了一个Calendar对象,其日历字段已使用当前日期和时间进行初始化。

类变量

Calendar.ERA 对应纪元(中文表示公元前或公元)

Calendar.YEAR 对应年份

Calendar.MONTH 对应月份 (月份从0开始计算)

Calendar.DATE对应月份中的日期(日期从1 开始计数,有效范围为1-31)

Calendar.HOUR_OF_DAY 对应一天当中的小时(小时从0开始技术,有效范围为0-23)

Calendar.MINUTE 对应分钟(分钟从0开始计数,范围是0-59)

Calendar.SECOND 对应秒(秒数从0开始计数,范围时0-60)(要注意闰秒)

Calendar.MILLISECOND 对应毫秒(毫秒数从0开始计数,有效范围为0-999)

Calendar.DAY_OF_MONTH 对应月份中的日期(日期从1开始计数,有效范围为1—31)

Calendar.HOUR 对应上午或下午的小时(小时从0开始计数,有效范围为0-11)

Calendar.DAY_OF_WEEK 对应星期(用于知识一个星期中的某天)

Calendar.DAY_OF_YEAR 对应年份中的天数(指定当前年中的天数。一年中第一天的值为1,最大值为366)

Calendar.AM 表示一天午夜到中午之前的时间,即上午

Calendar.PM 表示从中午到午夜之前的一天中的一段时间,即下午

获取Calendar对象
通过子类获取

java.util.GregorianCalendar 是Calendar 类的子类,并提供给了世界上大多数国家使用的标准日历系统,通过GregorianCalendar对象即可使用Calendar中的发给发

通过Calendar 的static方法获取

Calendar 类中提供了大量的static 方法用于获取Calendar对象

设置/清除Calendar 对象值

Calendar 类中提供了一个方法用于设置日历字段的值

public void set(int field,int value)

public finalvoid set(int year,int month, int date)

public final void set(int year,int month,int date,int hourofDay,int minute)

public final void set(int year,int month,int date,int hourofDay,int minute,int second)

清空直嘀咕日历字段值得方法:

public final void clear(int field)

Calendar类中还提供了清空所有日历字段值得方法:

public final void clear()

Calendar 对象和Date 对象互相转换
// Calendar --> Date
Calendar calendar = new GregorianCalendar();
// java.util.Date 类中的 getTime() 方法可以返回一个毫秒值
// java.util.Calendar 类中的 getTime() 用于返回相应的 Date 实例
Date d = calendar.getTime();


//Date   -->   Calendar
Date date = new Date();
Calendar c = Calendar.getInstance();//getInstance返回一个Calendar对象

DateFormat

java.text.DateFormat 是日期/时间格式化子类的抽象类。它可以将日期时间格式化和将字符串解析 为 Date。

但是, DateFormat 是一个抽象类。所以使用时使用其子类 SimpleDateFormat

SimpleDateFormat 的构造方法

public SimpleDateFormat();

public SimpleDateFormat(String pattern);

public SimpleDateFormat(String pattern, Locale locale);

public SimpleDateFormat(String pattern, DateFormatSymbols formatSymbols);

最常用的是 public SimpleDateFormat(String pattern) ,其中 pattern 表示日期的格式,日期格 式规则如下:

比如 yyyy-MM-dd 对应 1995-01-01

Date格式化
long ms = 1000L * 60 * 60 * 24 * 365 * 26 ;
//重点: 将java.util.Date对象表示的【瞬间】格式化为【指定格式】的字符串
Date birthdate = new Date(ms);

System.out.println(birthdate);//Tue Dec 26 08:00:00 CST 1995

String pattern = "G yyyy年MM月dd日 EEEE HH:mm:ss.SSS" ; // 确定 "日期
时间" 的格式
    
SimpleDateFormat sdf = new SimpleDateFormat(pattern);

String str = sdf.format(birthdate);

System.out.println(str);//公元 1995年12月26日 星期二 08:00:00.000

LocalDate

java.time.LocalDate 是一个不可变( final 修饰)的日期时间对象,是线程安全的,表示日期,通常被 表示为年月日。也可以访问其他日期字段,例如日期,星期几和星期

字段

LocalDate 中声明了三个字段来存储年、月、日

因为它们都是 final 修饰的,因此一旦创建 LocalDate 实例,其 年份、月份、日期 的值再也不能被 更改。

另外, LocalDate 类还声明了以下常量:


public static final LocalDate MIN = LocalDate.of( Year.MIN_VALUE, 1, 1
);//-999999999-01-01

public static final LocalDate MAX = LocalDate.of( Year.MAX_VALUE, 12, 31
);//+999999999-12-31

1 public static final LocalDate EPOCH = LocalDate.of( 1970, 1, 1 );
//表示 记元 对应的日期

获取LocalDate 实例
public static LocalDate now();
//LocalDate类的now(ZoneId zone)方法用于通过参数传递的指定时区中的系统时钟返回当前日期。指定时区可避免依赖默认时区。
public static LocalDate now(ZoneId zone);
//LocalDate类的now(Clock clock)方法用于根据作为参数传递的指定时钟返回当前日期。
public static LocalDate now(Clock clock);

public static LocalDate of(int year, Month month, int dayOfMonth);
public static LocalDate of(int year, int month, int dayOfMonth);
public static LocalDate ofYearDay(int year, int dayOfYear);
public static LocalDate ofEpochDay(long epochDay);

常用的是 now() 、 of(int year , int month , int dayOfMonth) 、 ofYearDay(int year , int dayOfYear)

常用实例方法

LocalDate 类中定义了大量的实例方法,其中比较常用的是:

​ public int getYear() 用于获取年份

​ public int getMonthValue() 用于获取月份 ( 取值范围是 1 ~ 12 )

​ public int getDayOfMonth() 用于获取日期 ( 取值范围是 1 ~ 31 )

​ public DayOfWeek getDayOfWeek() 用于获取星期 ( 返回类型为 DayOfWeek )

​ public boolean isLeapYear() 用于判断 LocalDate 实例对应的年份是否是闰年

​ public int lengthOfYear() 用于获取 LocalDate 实例对应的年份的总天数

​ public int lengthOfMonth() 用于获取 LocalDate 实例对应的月份的总天数

心得:

今天学习的东西有点多,但大多是一些类的方法,今天做题的时候就是每次要用东西了就只能去翻,然后效率就很低,还是需要好好消化一下,不能每次要用的时候都得去翻叭。

评论


© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1