04、Date、SimpleDateFormat和Calendar日历

这篇博客介绍了Java中处理日期和时间的基本方法,包括通过`Date`类获取当前时间,使用`System.currentTimeMillis()`创建时间对象,以及`SimpleDateFormat`进行日期格式化。此外,还展示了`Calendar`类的使用,如何设置和获取日期字段,并演示了如何找到特定年份的母亲节日期。
摘要由CSDN通过智能技术生成

日期类型:java.util.Date

获取当前日期的两种方式:

--Date date = new Date();

--long item = System.currentTimeMillis(); Date date = new Date(item);

日期格式化SimpleDateFormat  

--创建SimpleDateFormat的对象:

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

     --使用:Date 格式化输出  String字符串

String item = sm.format(new Date());

     --String类型表示日期  转换为  java.util.Date;


/**
 * @author Lantzrung
 * @date 2022年7月15日
 * @Description
 */
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
// 记住不要导错包 不要导错了import java.sql.Date;

public class DateDemo {
    public static void main(String[] args) throws ParseException {
	// 1、获取当前的系统时间
	Date date = new Date();// new 一个实例化对象
	System.out.println(date);// Fri Jul 15 21:52:37 CST 2022 
	// 2、通过时间戳来创建一个时间对象 时间戳-->1970年1月1如到现在的总毫秒数
	// 方式一
	long item = System.currentTimeMillis();
	Date date2 = new Date(item);
	System.out.println(date2);// Fri Jul 15 21:52:37 CST 2022
	// 方式二
	Date date1 = new Date(System.currentTimeMillis());
	System.out.println(date1);// Fri Jul 15 21:52:37 CST 2022

	// 3、时间格式化【本地化】 2022-07-15 22:12:58
	// Date转换为字符串
	// 格式化 yyyy-MM-dd HH:mm:ss 24小时制
	SimpleDateFormat sm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	String time = sm.format(date);
	System.out.println(time);// 2022-07--15 22:12:58

	// 格式化yyyy-MM-dd hh:mm:ss 12小时制
	SimpleDateFormat sm1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
	String time1 = sm1.format(date);// 2022-07-15 10:12:58 //先将用一个String 数组time1定 
    // 义 ,再将date代入sm1.format()中
  	System.out.println(time1);// 11:12:58

	// 格式化 HH:mm:ss 24小时制
	SimpleDateFormat sm2 = new SimpleDateFormat("HH:mm:ss");
	String time2 = sm2.format(date);
	System.out.println(time2);// 22:12:58

	// 字符串转换为Date
	// 需要抛出异常 throws ParseException
	Date item1 = sm1.parse("2021-07-15 22:12:58");// 12小时制:2021-07-15 22:12:58
	// 定义的格式话那里 需要注意细节 不然会出现报错
	// Exception in thread "main" java.text.ParseException: Unparseable date:
	// "2021-07-15 22:12:58"
	// at java.text.DateFormat.parse(Unknown Source)
	System.out.println(item1);// Thu Jul 15 22:12:58 CST 2021
	System.out.println(sm1.format(item1));// 2021-07-15 10:12:58

	Date dItem = sm.parse("2021-07-15 22:12:58");
	// 需要抛出异常 throws ParseException
	System.out.println(dItem);// Thu Jul 15 22:12:58 CST 2021

    }

}

Calendar是日历类型 比Date类型(1996年)能更好的处理日期和时间

类是一个抽象类,不能new对象

星期一 Mon 星期二 Tues 星期三Wed 星期四Thur 星期五 Fri 星期六 Sat 星期天 Sun

英语里面月份的缩写:

一月份Jan 二月份Feb 三月份Mar 四月份Apr 五月份May 六月份June 七月份July 八月份Aug 九月份Sept 十月份Oct 十一月份Nov 十二月份Dec

// Calendar是日历类型,更加具体,强大 比
// 1、如何获取Calendar的对象 Calendar是抽象类,不能new对象 
//--获取Calendar类的实例对象:
Calendar calendar = Calendar.getInstance();//设置实例对象

// getTime 获取当前date时间  从CST到CDT的夏令时更改
System.out.println(calendar.getTime());// Thu Jul 14 12:31:34 CST 2022

// 根据字段来获取具体的时间
System.out.println(calendar.get(Calendar.YEAR)); // 注意:年份是2022 2022 年 year
System.out.println(calendar.get(Calendar.MONTH));// 注意:月份是0~11 而不是1~12 6  月 month
System.out.println(calendar.get(Calendar.DAY_OF_MONTH)); // 注意:一个月的第几天  14 天 day 
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));// 注意:一周中的第几天 5 天 day
System.out.println(calendar.get(Calendar.SECOND)); //读取秒数 40s

// 根据字段来设置具体的时间 【set】 第一个参数为字段 第二个参数为数值
calendar.set(Calendar.MONTH, 15);// 设置月份
calendar.set(Calendar.DAY_OF_MONTH, 23);// 设置一个月的第几天
System.out.println(calendar.getTime());// 输出时间

//使用默认时区和语言环境获得一个日历。-- 设置当前时间:
//重新获取当前电脑的时间 时间戳    Thu Jul 14 13:52:46 CST 2022
//calendar.setTimeInMillis(System.currentTimeMillis());

练习://获取2020年和2021年的母亲节的日期,tips,5月份的第二个星期日,要求:输出时间格式为yyyy年MM月dd日

import java.text.SimpleDateFormat;
import java.util.Calendar;

/**
 * @author Lantzrung
 * @date 2022年7月17日
 * @Description
 */
public class Demo2 {
	public static void main(String[] args) {
		        //获取2020年和2021年的母亲节的日期,tips,5月份的第二个星期日,要求:输出时 
                //间格式为yyyy年MM月dd日
				//1、如何获取Calendar的对象Calendar是抽象类,不能new对象
				Calendar cd = Calendar.getInstance();//获取实例化对象
				// 根据字段来设置具体的时间【set】第一个参数为字段 第二个参数为数值
				cd.set(Calendar.YEAR, 2021);//设置年
				cd.set(Calendar.MONTH, 4);//设置月 注意:这里月份是有0~11 所以5月份是要设置 
                //4的数值value
				cd.set(Calendar.DAY_OF_WEEK_IN_MONTH, 2);//这里输出的这个月的第几周的 
				cd.set(Calendar.DAY_OF_WEEK, 1);//这里是从星期天输出的一周
				
				SimpleDateFormat sm = new SimpleDateFormat("yyyy-MM--dd");
				//Sun May 09 00:33:34 CST 2021
				System.out.println(cd.getTime());//获取当前Calendar日历所要设置的时间
			
				cd.set(Calendar.YEAR, 2020);//设置年
				cd.set(Calendar.MONTH, 4);//设置月 注意:这里月份是有0~11 所以5月份是要设置 
                //4的数值value
				cd.set(Calendar.DAY_OF_WEEK_IN_MONTH, 2);//这里输出的这个月的第几周的 
				cd.set(Calendar.DAY_OF_WEEK, 1);//这里是从星期天输出的一周
			
				SimpleDateFormat sm1 = new SimpleDateFormat("yyyy-MM--dd");
				//Sun May 10 00:33:34 CST 2020
				System.out.println(cd.getTime());//获取当前Calendar日历所要设置的时间
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lantzruk

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值