日期/Date/SimpleDateFormt/Calendar

Date

  • java.util.Date
  • Date的每一个实例用于表示一个具体的时间点,内部维护一个long值,表示的是自1970年1月1日00:00:00到当前Date表示的时间之间经过的毫秒
  • 由于Date存在时区等问题,导致大部分操作时间的方法都被声明为过时的,开发时不再建议使用。因此我们现在仅使用Date表示一个时间
		Date date = new Date();
		System.out.println(date);
		/*
		 * 获取Date内部维护的long值
		 */
		long time = date.getTime();
		System.out.println(time);
		//设置一个long值,使当前Date表示这个时间
		date.setTime(0);
		System.out.println(date);

SimpleDateFormat

  • java.text.SimpleDateFormat
  • 可以按照指定的日期格式在Date与String之间相互转换
  • String format(Date date)将给定的Date对象按照SimpleDateFormat指定的日期格式转换为字符串
  • Date parse(String str) 将给定的字符串按照SDF指定的日期格式解析为Date对象。
    若给定的字符串与SDF指定的日期格式不匹配时会抛出解析异常
    在这里插入图片描述
		Date date = new Date();
		
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 E a H:m:ss");//定义日期格式
		String dateString = sdf.format(date);//把日期按照sdf指定的格式转成字符串
		System.out.println(dateString);
		
		String str = "2019年01月30日";
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");//空格严格按照格式来,乱放空格会异常
		Date date = sdf.parse(str);
		System.out.println(date);

Calendar

  • java.util.Calendar 日历类
    Calendar是一个抽象类,定义了操作时间的一系列方法。常用实现类:GregorianCalendar,即:阳历
    Calendar提供了静态方法getInstance,可以根据当前系统所在地区获取一个适用的实现类实例,大部分获取的都是阳历
  • void setTime(Date date)调整Calendar表示给定的Date对象所表示的日期
  • 获取日。与天相关的时间分量
    DAY_OF_MONTH:月中的天
    DATE: 月中的天
    DAY_OF_WEEK:周中的天
    DAY_IF_YEAR:年中的天
Calendar calendar = Calendar.getInstance();
		
		int year = calendar.get(Calendar.YEAR);
		//月份是从0开始
		int month = calendar.get(Calendar.MONTH)+1;
				
		int day = calendar.get(Calendar.DATE);
		System.out.println(year+"-"+month+"-"+day);
				
		int h = calendar.get(Calendar.HOUR_OF_DAY);//时
		int m = calendar.get(Calendar.MINUTE);//分
		int s = calendar.get(Calendar.SECOND);//秒
		System.out.println(h+":"+m+":"+s);
				
		int days = calendar.get(Calendar.DAY_OF_YEAR);
		System.out.println("今天是今年的第"+days+"天");
		//返回1-7,1表示星期天,2是星期一。。。
		int week = calendar.get(Calendar.DAY_OF_WEEK)-1;
		String[] str = {"日","一","二","三","四","五","六"};
		System.out.println("今天是周"+str[week]);
				
		days = calendar.getActualMaximum(Calendar.DAY_OF_YEAR);
		System.out.println("今年共"+days+"天");
		days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
		System.out.println("本月共"+days+"天");
				
  • void set(int field,int value)调整当前Calendar指定时间为给定的值
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.YEAR, 2100);
		calendar.set(Calendar.MONTH,7);
		calendar.set(Calendar.DATE,20);
		calendar.set(Calendar.HOUR,16);
		calendar.set(Calendar.AM_PM, 2);
		calendar.set(Calendar.MINUTE, 8);
		calendar.set(Calendar.SECOND, 8);
		System.out.println(calendar.getTime());
  • void add(int field,int amount)对指定时间分量加上给定的值,若给定的值为负数则是减去
		Calendar calendar = Calendar.getInstance();
		//3年2个月25天后是哪天
		calendar.add(Calendar.YEAR, 3);//加3年
		calendar.add(Calendar.MONTH, 2);//加2月
		calendar.add(Calendar.DAY_OF_YEAR, 25);//加25天
		System.out.println(calendar.getTime());
		//那天所在周的周五是哪天
		calendar.set(Calendar.DAY_OF_WEEK, 6);
		System.out.println(calendar.getTime());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值