Java常用API之Date类、DateFormat类、Calendar类浅显应用

这是我第一次写播客,用来记录自己学习Java的方向和进程,探索Java语言世界的奇妙之旅。
如果文中有错误的地方,希望前辈们可以指点一二。

常用API——Date类

1、Date类的概述

	类Date用来表示特定的瞬间,可以精确到毫秒
	实际应用可以用来获取当前系统的时间信息,精确到毫秒值

2、Date类常用的构造方法

	Date()  获取当前系统时间
	Date(long time) 根据指定的毫秒值创建日期对象

3、Date类常用方法

	long getTime()
		获取当前时间的毫秒值

4、时间的转换

	1秒=1000毫秒
	时间零点:1970-1-1 00:00:00

5、相关应用

import java.util.Date;
public class Demo01 {
public static void main(String[] args){
    // 创建日期对象:当前系统时间
    Date date = new Date();
    //获取当前系统时间信息
    System.out.println(date);
    // 获得当前时间的毫秒值
    System.out.println(date.getTime());

    //将毫秒值转为时间
    //毫秒值是唯一的,是单向性的   
    Date date2 = new Date(1555293724756L);
    System.out.println(date2);
}

}

常用API——DateFormat类

1、DateFormat类的作用

1.将日期对象转换为字符串  Date==>String
2.将日期字符串转换为日期对象:String==>Date

2、如何创建一个DateFormat对象

DateFormat是一个抽象类,不能直接创建该类对象,只能创建子类对象
已知直接子类有:SimpleDateFormat
直接创建SimpleDateFormat对象,调用方法进行格式化操作即可。

3、SimpleDateFormat类常用的构造方法

SimpleDateFormat(String pattern)
根据日期模式创建日期格式化对象
日期模式
yyyy		年		2019
MM         	月		04
dd 			日		15
HH			时		23
mm			分		40
ss			秒		50

4、例子:将Date转成“xxxx年xx月xx日 xx时xx分xx秒”的格式

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo02{
public static void main(String[] args){
    // 需求:将 Date 转成 "2019年09月15日 19时18分19秒"
    // 获得日期对象
    Date date = new Date();
    // 创建日期格式化对象并指定日期模式
    // DateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
    DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    // 将日期对象转换为字符串
    String dateStr = sdf.format(date);
    //输出
    System.out.println(dateStr);
}}

6、使用DateFormat类的方法将日期字符串转换为日期对象

1.创建日期格式化对象并指定日期模式:SimpleDateFormat
2.调用日期格式化对象的方法将日期字符串转换为日期对象:Date parse(String dateStr)
            注意事项:指定的日期模式和字符串日期模式要一致。

7、DateFormat类常用方法有两个

String format(Date date) 日期转字符串
Date parse(String str)  字符串转日期

例子:

public class Demo03 {
public static void main(String[] args) throws ParseException {
    // 1. 日期字符串:String
    String dateStr = "2007/12/26";
    // 2. 创建日期格式化对象并指定日期模式:SimpleDateFormat
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
    // 3. 调用日期格式化对象的方法将日期字符串转换为日期对象:Date parse(String dateStr)
    Date date = sdf.parse(dateStr);
    System.out.println(date);
}}

常用API——Calender类

1、Calender的作用

非常方便的可以获取到年月日时分秒,昨天,前天,明天,上个星期,上个月,前几年…
可以方便的调整时间

2、创建Calender

Calender是一个抽象的类,不能直接创建对象,只能创建子类对象
通过Calendar类静态方法创建日历类对象,该方法如下:
static Calendar getInstance() 获得日历对象

3、Calender类的常用方法

int get​(int field)
根据日历字段获得值
            常用的日历字段:
                年 Calendar.YEAR
                月 Calendar.MONTH
                日 Calendar.DAY_OF_MONTH
                时 Calendar.HOUR
                分 Calendar.MINUTE
                秒 Calendar.SECOND

         void set​(int field, int value)
            * 修改指定日历字段的值为指定值value

         void add​(int field, int amount)
            * 将指定日历字段的值在当前值的基础上偏移一个值:amount
            * 正数:向前偏移 +
            * 负数:向后偏移 -

5、Calender注意事项

MONTH: 取值范围0到11  需要加1才是我们正确的月份
 DAY_OF_WEEK: 1代表星期天

例子:

import java.util.Calendar;
public class Demo08 {
public static void main(String[] args){
    // 获得日历对象
    Calendar c = Calendar.getInstance(); // new GregorianCalendar();
    System.out.println(c.get(Calendar.DAY_OF_WEEK));
    // 获得年
    int year = c.get(Calendar.YEAR);
    // 获得月
    int month = c.get(Calendar.MONTH) + 1;
    // 获得日
    int day = c.get(Calendar.DAY_OF_MONTH);
    System.out.println(year+"-"+month+"-"+day);
    System.out.println("----------------------");
    // 将年份修改为2020年
    c.set(Calendar.YEAR, 2020);
    c.set(Calendar.MONTH, 4);

    // 获得年
    year = c.get(Calendar.YEAR);
    // 获得月
    month = c.get(Calendar.MONTH) + 1;

    System.out.println(year+"-"+month+"-"+day);

    System.out.println("----------------------");
    // 将年份向后偏移1年
    c.add(Calendar.YEAR, 2);
    c.add(Calendar.MONTH, 12); // 0 到 11
    // 获得年
    year = c.get(Calendar.YEAR);
    System.out.println(year+"-"+month+"-"+day);
}}

分享两个实际应用

1、计算一个人从出生到现在活了多少时间

分析:
    1. 生日日期字符串:"1999-02-10"
    2. 将生日字符串转换为日期对象:String --> Date
    3. 获得出生时的毫秒值:long
    4. 获得当前时间的毫秒值:long
    5. 两个毫秒值相减:long
    6. 计算天数
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Demo09 {
public static void main(String[] args)throws ParseException{
    // 1. 生日日期字符串:"1999-02-10"
    String birthdayStr = "1999-02-10";
    // 2. 将生日字符串转换为日期对象:String --> Date
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date birthdayDate = sdf.parse(birthdayStr);
    // 3. 获得出生时的毫秒值:long
    long birthdayDateTime = birthdayDate.getTime();
    // 4. 获得当前时间的毫秒值:long
    Date currentDate = new Date();
    long currentDateTime = currentDate.getTime();
    // 5. 两个毫秒值相减:long
    long distance = currentDateTime - birthdayDateTime;
    // 6. 计算天数
    System.out.println("活了"+(distance/1000/3600/24)+"天");
}}   

2、计算指定年份的2月份的天数

分析:
    1. 创建日历对象
    2. 设置日历时间为指定年份的3月1号
    3. 将日向后偏移1天:减一天(2月最后一天)
    4. 获得当前月份的天数
 import java.util.Calendar;
 public class Demo10 {
 public static void main(String[] args){
    // 1. 创建日历对象
    Calendar c = Calendar.getInstance();
    // 2. 设置日历时间为指定年份的3月1号
    c.set(2000, 2, 1);
    // 3. 将日向后偏移1天:减一天(2月最后一天)
    c.add(Calendar.DAY_OF_MONTH, -1);
    // 4. 获得当前月份的天数
    int day = c.get(Calendar.DAY_OF_MONTH);
    if (day == 28){
        System.out.println("平年");
    } else {
        System.out.println("闰年");
    }
    System.out.println(day);
}

}
3、计算500天之后的日期

public class Test03 {
public static void main(String[] args) {
    //获取当前日历对象
    Calendar c = Calendar.getInstance();
    System.out.println(c.get(Calendar.DAY_OF_WEEK));
    int year = c.get(Calendar.YEAR);
    int month = c.get(Calendar.MONTH);
    int day = c.get(Calendar.DAY_OF_MONTH);
    System.out.println(year+"年"+month+"月"+day+"日");
	//获取500天后的日期
    c.add(Calendar.DAY_OF_YEAR,500);
    year = c.get(Calendar.YEAR);
    month =c.get(Calendar.MONTH);
    day = c.get(Calendar.DAY_OF_MONTH);
    System.out.println(year+"年"+month+"月"+day+"日");

}}

写完了,这就是我今天一天所学到的东西,如果文中有错,请在下方留言,我会及时回复并且更改。谢谢各位前辈的指教和同辈的支持。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值