JAVA学习日记:Date和Calendar

本节课我学习的主要内容有:

1.Date类
2.Calendar类
3.日期与时间的格式化方法SimpleDateFormat类

Date类:

		来自java.util包,它的对象代表的是即时时间。
  		
 		体现的是从1970年01月01日00时00分00秒00毫秒距离当前时间的毫秒数。
  		
  		Date不支持国际化的、并且很多方法已经过时、不推荐使用。
  
  		new Date()即可创建一个表示当前时间的Date对象。
  
 		getTime()得到1970年。。。到现在这个时刻的时间有多少毫秒的长整数。
  		setTime()
  		after()
  		before()
  				
  		现如今Date中很多方法已经没有什么用了,如今时间的处理并不直接在Date类中进行,
  		而是通过Calendar或者LocalDate、LocalTime来进行,在日常使用中更多的
  		是要做一个记录日期的实例。

Calendar类:

		该类是抽象类,来自于util包。
 
  		GregorianCalendar是Calendar的子类;可以自己设置自己的时区和国际化格式;定义了
  		足够的方法,让我们能够表述日历的规则,Date用于记录一个含日期的、精确到毫秒的时间,重点
  		代表一刹那的时间本身。
  
  		Calendar用于将某一日期放到历法中去,时间和年月日星期上午下午夏令时等这些历法规定相互
  		作用关系和互动,Calendar本身代表公历的一个简化缩水版,姑且叫“计算机历”。
  
  		javaSE中以GregorianCalendar类来提供完整的公里相关的历法功能。
  			获取实例对象:Calendar NAME = Calendar.getInstance();
  			get()方法:根据参数获取时间的信息,如获取指定时间属性:c.get(Calendar.YEAR);
 			Calendar实例所表示的时间NAME.set(2020.11.6);
  			add()方法与roll方法的使用区别。

日期与时间的格式化方法SimpleDateFormat类:

		是抽象类DateFormat类的子类。
 		可以自定义日期格式。
  		它是一个与语言环境相关的方式来格式化和分析日期的具体类。
  
 		SimpleDateFormat使得可以选择任何用户定义的日期-时间格式。
  			
  		SimpleDate类的使用:
  			获取SimpleDateFormat实例
  				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MMMM-dd HH:mm:ss");
  			将日期格式化成指定字符串:sdf.format(new Date());
  			将格式化的字符串转换成日期对象:sdf.parse("xxxx-xx-xx");
  
  			y 年
  			M 年中的月份
  			d 月份中的天数
  			E 星期中的天数
  			a Am/pm标记
  			H 一天中的小时数(0-23)
 			h am/pm中的小时数(1-12)
 			m 小时中的分钟数
  			s 分钟中的秒数
  			S 毫秒数
  
 		方法:
  			format()实现格式化。	

TestDateAndCalendar类(测试所学内容的类)

package LessonForDateAndCalender;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

public class TestDateAndCalendar 
{
	public static void main(String[] args) 
	{
		System.out.println("Date测试-----------------------------------");
		Date d1 = new Date();
		System.out.println("从1970年01月01日00时00分00秒00毫秒距离当前时间的毫秒数:"+d1.getTime());
		System.out.println("当前时间:"+d1.toString());
		
		//以下好多种方法都不推荐使用了
		System.out.println("本月的日期:"+d1.getDate());
		System.out.println("本日是星期几:"+d1.getDay());
		
		Date d2 = new Date(2020,11,6);
		Date d3 = new Date(2020,10,6);
		
		System.out.println("d2时间是否在d3之后:"+d2.after(d3));
		System.out.println("d3时间是否在d2之后:"+d3.before(d2));
		
		System.out.println("格式化Date测试-----------------------------------");
		
		SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd E a hh:mm:ss");
		System.out.println(sdf1.format(d1));//输出2020-11-06 星期五 下午 10:08:57
		//通过一个给定的字符串来转换为一个日期对象
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
		try 
		{
			Date d4 = sdf2.parse("2020-11-06");//这里转换的字符串日期格式要和你sdf2中的一样。
			System.out.println("d4这天是星期:"+d4.getDay());
		} catch (ParseException e) 
			{
				e.printStackTrace();
			}
		
		System.out.println("Calendar测试-----------------------------------");
		Calendar c1 = Calendar.getInstance();//默认得到当前的时间点
		System.out.println("当前年:"+c1.get(Calendar.YEAR));
		System.out.println("当前月:"+(c1.get(Calendar.MONTH)+1));//Calendar中月份是从0开始算的
		System.out.println("当前日:"+c1.get(Calendar.DATE));
		
		Calendar c2 = Calendar.getInstance();//默认得到当前的时间点
		//set()
		c2.set(2020, 7, 9, 10, 56);
		System.out.println("当前年:"+c2.get(Calendar.YEAR));
		System.out.println("当前月:"+c2.get(Calendar.MONTH));//Calendar中月份是从0开始算的
		System.out.println("当前日:"+c2.get(Calendar.DATE));
		
		//add()会自动进位
		c2.add(Calendar.DATE, 5);//增加日期
		System.out.println("增加5天后的当前日:"+c2.get(Calendar.DATE));
		
		//roll()不会自动进位
		c2.roll(Calendar.MONTH, 1);
		System.out.println("增加1个月后当前月:"+(c2.get(Calendar.MONTH)));
		
		c2.roll(Calendar.MONTH, true);//true会自动增 false会自动减
		System.out.println("增加1个月后当前月:"+(c2.get(Calendar.MONTH)));
	}
}

本篇部分文字来源于:
咕嘟咖啡杨海滨老师 — 《java编程语言高级特性》
在这里十分感谢老师能够给我带来学习的激情。

2020.11.6
本文章是本人学习笔记,不进行任何商用所以不支持转载请理解!也请别拿去商用!
如果觉得对你有帮助那么欢迎你随时来回顾!
只为记录本人学习历程。
毕
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值