java 和历_JAVA笔记整理-日期和日历类

日期和日历类

1、日期类 Date

​ 在Java中用于表示日期的类 java.util.Date() ,用于获取日期和时间的对象, 不过这个类的一些方法以及过时(被日历类取代)

​ 创建日期类

Date date = new Date();

Date date = new Date(long) ;

// 创建日期类的对象

Date date = new Date();

//获取当前时间 以 标准格式

System.out.println(date);

// 获取当前时间的毫秒数

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

//通过毫秒数构建当前时区的 时间

Date date2 = new Date(100000);

System.out.println(date2);

// 获取 纪元时间 相隔本地时间8时区

System.out.println(date.toGMTString());

System.out.println(date.toLocaleString());

//测试时间的先后

System.out.println(date.after(date2));// true

System.out.println(date.before(date2));//false

System.out.println(date.compareTo(date2));//比较时间大小

// 时间转成字符串

System.out.println(date.toString());

2、日历类 Calendar

java.util.Calendar 是表示日历类, 它是一个单例模式 ,通过 getInstance()获取一个日历对象, 并获取日历的任意时间,日期。

常用方法

​getInstance() : 获取日历对象

​ get() :获取指定的单位的日历数值 (年,月,日 等等)

​ set():设置指定单位的日历数值

​ add() :添加指定单位的日历数值

​ getTimeInMills() :获取日期的毫秒数

// 获取当前日历对象

Calendar cal = Calendar.getInstance();

// 日历的属性 (fields)

System.out.println(Calendar.DATE);

System.out.println(Calendar.YEAR);

System.out.println(Calendar.MONTH);

//获取当前日历的年份

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

// 获取月份 (返回 0-11)

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

// 获取日(1-31)

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

// 获取日期

System.out.println("获取当前日历的日期:"+ cal.getTime());

// 添加日历 (指定的field 和 数量)

// 将当前日历添加2个月

cal.add(Calendar.MONTH ,2);

System.out.println("新的日期:"+cal.getTime());

cal.add(Calendar.DATE,-3);

System.out.println("新的日期:"+cal.getTime());

// 判断日期的前后 after before

// 题目 给定两个日期, 计算相差多少天

Calendar cal1 = Calendar.getInstance();

计算两个日历(日期)的相差天数/月数

// 重写构建一个时间

Calendar cal2 = Calendar.getInstance();

// 设置指定的时间

cal2.set(2020,10,20);

System.out.println("cal2---"+cal2.getTime());

// 原始方式 通过毫秒数计算

long n = cal1.getTimeInMillis()-cal2.getTimeInMillis();

System.out.println("n---->"+n);

long days = n/(1000*60*60*24);

System.out.println("days:"+days);

// java8 的方式

LocalDate date1 = LocalDate.of(2020,2,22);

LocalDate date2 = LocalDate.of(2020,3,22);

long days2 = date1.until(date2,ChronoUnit.DAYS);

System.out.println("两个时间相差的天数:"+ days2);

3、字符串与日期格式的转换

/**

* 字符串转日期

* @param str

*/

public static Date strToDate(String str) throws ParseException {

//使用格式化日期类 指定格式 :yyyy-MM-dd HH:mm:ss

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

// 指定格式的字符串 转成 日期

return sdf.parse(str);

}

/**

* 日期转指定格式的字符串

*/

public static String dateToString(Date date){

// 使用同样的方式

SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");

return sdf.format(date);

}

// 调用转换方法

String s = "2020-10-22 10:10:10";

Date myDate= strToDate(s); // 注意 这里的格式需要匹配yyyy-MM-dd HH:mm:ss

System.out.println(myDate);

// 将日期转成字符串

System.out.println(dateToString(myDate));

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值