JavaAPI(Date类、SimpleDateFormat类、Calendar类)

Date日期类型

  • 是一个用来表示时间、日期的类,这个类在 java.util 包中,在使用 Date的时候,一定要注意 : 在 java.sql 包中,也有一个Date,千万不要导错包了。

  • java中的时间使用标准类库的Date类型来表示,是用距离某一个固定时间点的毫秒数表达的一个特定的时间点:

  • 固定时间点(纪元时间点):1970年1月1日00:00:00

  • UTC(Universal Time Coordinated世界调整时间)与GMT(Greenwich Mean Time格林威治时间)一样,是一种具有实际目的的科学标准时间。

  • Date类的大多数用于进行时间分量计算的方法已经被Calendar取代。

常用构造器与方法

  • Date() :获取当前系统时间

  • Date(long time):设置一个距离固定点的指定毫秒数的时间点。


  • long getTime()

  • void setTime(long time)

  • String toString() 格式: Thu May 24 19:32:14 CST 2018


    public static void main(String[] args) {

    //使用Date类型,来获取当前系统时间

    Date now = new Date();

    System.out.println(now);

    // 使用有参构造器,来获取距离纪元的2天后的时间

    Date d1 = new Date(3600*24*1000*2);

    System.out.println(d1);

    //获取毫秒数:

    long time = now.getTime();

    System.out.println(time);

    //将long的最大值作为毫秒数,算一下距离1970年是哪年那月那日。

    d1.setTime(Long.MAX_VALUE);

    System.out.println(d1);

    }

SimpleDateFormat类型

java.text.SimpleDateFormat是一个用来格式化和解析日期的具体类

它允许进行格式化(日期 ->文本)、解析(文本 -> 日期)和规范化

  • 将一个Date对象转成一个指定格式的字符串

  • 将一个自定格式的字符串转成一个Date对象

常用构造器和方法

  • SimpleDateFormat()
  • SimpleDateFormat(String pattern):指定一个日期格式符号来构造对象

  • final String format(Date date) 格式化方法,日期 --->字符串

  • Date parse(String source) throws ParseException 解析方法,字符串--->日期


    |----|-------------|-----------------------------------------------------------------------|
    | 字符 | 含义 | 栗子 |
    | y | 年 | yyyy年-2025年;yy年-25年 |
    | M | 月 | MM月-02月;M月-2月 |
    | d | 日 | dd日-07日;d日-7日 |
    | E | 星期 | E-星期日(Sun) |
    | a | 上午下午(AM、PM) | a-下午(PM) |
    | H | 24小时制 | a h时--------下午 10时HH:mm:ss------12:21:34hh(a):mm:ss------12(PM):21:34 |
    | h | 12小时制 | |
    | m | 分钟 | |
    | s | 秒 | |

日期转换成字符串 :

//获取当前系统时间

Date now = new Date();

System.out.println(now);

//需要使用SimpleDateFormat对象来进行格式化 年-月-日 时:分:秒 E a

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss E a");

String str = sdf.format(now);

System.out.println("显示时间:"+str);


字符串转日期:

String str2 = "2003年2月7号00点00分";

// 注意: 字符串转日期时,SimpleDateFormat里的格式必须按照字符串来设定,否则报异常

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd号HH点mm分");

Date birthday = sdf1.parse(str2);

System.out.println(birthday);

//再次获取毫秒数

System.out.println(birthday.getTime());


计算自己活了几天:

//获取当前系统时间距离生日那天的毫秒数

long time = now.getTime()-birthday.getTime();

System.out.println(time/1000/3600/24);

Calendar类型

Calendar: 日历,是用来表示时间、日期的类。在Date类中,有很多的方法都已经废弃了,使用 Caneldar中的某些方法进行实现。

java.util.Calendar类用于封装日历信息,其主要作用在于其方法可以对时间分量进行运算。

Calendar是抽象类型,其具体子类是针对不同国家的日历系统,其中应用最广泛的是GregorianCalendar(格里高利历,即通用的阳历),对应世界上绝大多数国家/地区使用的标准日历系统。

程序员不需要直接调用子类型的构造器来获取日历对象,类里封装了一个工具方法getInstance(),来获取该地区的子类型对象。

常用方法:

  • getInstance方法:

Calendar提供了一个类方法getInstance,以获取此类型的一个通用的对象

此方法返回一个Calendar对象,其日历字段已经由当前日期和时间初始化

  • Date getTime();返回一个Date类型来描述日期
  • void get(int Field):用Calendar表示Date所描述的日期
  • int getActualMaximum(int field) :指定一个时间常量,返回指定日历分量可能拥有的最大值。
  • void add(int field , int mount):指定一个时间常量,在此时间分量上增加指定的数值,若为负值,则是减去指定的数值。
  • 时间常量:

Calendar.YEAR: 年

Calendar.MONTH: 月 注意 该值的范围是0~11,分别表示1月~12月。 因此表示月份时,要+1操作。 设置月份时,要-1操作。

Calendar.DAY_OF_MONTH 日

Calendar.DATE 日

Calendar.HOUR_OF_DAY 24小时制的时

Calendar.HOUR 12小时制的时

Calendar.MINUTE

Calendar.SECOND

Calendar.DAY_OF_WEEK: 星期几 范围1~7, 1表示周日, 7表示周六, 显示时要-1操作

Calendar.DAY_OF_YEAR: 一年中的第几天。
//想要获取一个日历对象

Calendar cal = Calendar.getInstance();

System.out.println(cal);


常用方法:

Date time = cal.getTime();

System.out.println(time);

String calendarType = cal.getCalendarType();

System.out.println(calendarType);

//获取各种时间分量

System.out.println(cal.get(Calendar.YEAR));

System.out.println(cal.get(Calendar.MONTH));

System.out.println(cal.get(Calendar.DAY_OF_MONTH));

System.out.println(cal.get(Calendar.DATE));

System.out.println(cal.get(Calendar.HOUR_OF_DAY));

System.out.println(cal.get(Calendar.HOUR));

System.out.println(cal.get(Calendar.MINUTE));

System.out.println(cal.get(Calendar.SECOND));

System.out.println(cal.get(Calendar.MILLISECOND));

System.out.println(cal.get(Calendar.AM_PM));

System.out.println(cal.get(Calendar.DAY_OF_WEEK));//注意了

System.out.println(cal.get(Calendar.DAY_OF_YEAR));


设置时间分量:

// 修改成北京奥运时间: 2008-8-8日 20:08:00

cal.set(Calendar.YEAR,2008);

System.out.println(cal.getTime());

cal.set(Calendar.MONTH,8-1);

cal.set(Calendar.DAY_OF_MONTH,8);

cal.set(Calendar.HOUR_OF_DAY,20);

cal.set(Calendar.MINUTE,8);

System.out.println(cal.getTime());

//调用其他重载方法

cal.set(2009,10-1,12);

System.out.println(cal.getTime());


打印今年的每月的最后一天的日期数

Calendar c = Calendar.getInstance();

for(int month=1;month<=12;month++){

c.set(Calendar.MONTH,month-1); // 修改月份, 注意-1操作。

int actualMaximum = c.getActualMaximum(Calendar.DATE); //获取当月的日期分量的最大值

System.out.println(month+"月有"+actualMaximum+"天");

}


知道生产日期和保质期,计算促销日:

比如生产日期: 2025年1月12日, 保质期150天, 提前30天开始促销,计算促销日

c.set(2025,1-1,12);

c.add(Calendar.DAY_OF_MONTH,150-30);

System.out.println(c.getTime());

相关推荐
green5+113 分钟前
LeetCode18四数之和
java·开发语言·算法
啊阿狸不会拉杆18 分钟前
第二十五章:Python-pyecharts 库实现 3D 地图绘制
开发语言·python·地图
满怀101519 分钟前
Python入门(8):文件
开发语言·python
pk_xz12345620 分钟前
完整的Python程序,它能够根据两个Excel表格(假设在同一个Excel文件的不同sheet中)中的历史数据来预测未来G列数字
开发语言·python·excel
lzjava202424 分钟前
Redis数据结构之Set
java·数据结构·redis
Excuse_lighttime44 分钟前
JAVA单例模式
java·开发语言·单例模式
冷琅辞1 小时前
Swift语言的跨平台开发
开发语言·后端·golang
独隅1 小时前
针对Ansible执行脚本时报错“可执行文件格式错误”,以下是详细的解决步骤和示例
运维·开发语言·ansible·lua·lua5.4
敢敢のwings1 小时前
C++信号与槽机制自实现
开发语言·数据库·c++
·醉挽清风·1 小时前
学习笔记—C++—入门基础()
c语言·开发语言·c++·笔记·学习·算法