日期类实际应用(重要)

Calendar

操作日期,并打印结果

获取当前时间

		//默认返回的是当前日期
		Calendar c=Calendar.getInstance();
		long timeIn=c.getTimeInMillis();// 获取当前日期距离1970年的毫秒值
		int year=c.get(Calendar.YEAR);
		int month=c.get(Calendar.MONTH);//month从0开始
		int day=c.get(Calendar.DAY_OF_MONTH);//月份中的天
		int day2=c.get(Calendar.DAY_OF_WEEK);//礼拜的天(日开始)
		int day3=c.get(Calendar.DAY_OF_YEAR);//
		int hour=c.get(Calendar.HOUR_OF_DAY);
		int minute=c.get(Calendar.MINUTE);
		int second=c.get(Calendar.SECOND);
		System.out.println(day2+"  "+day3);
		//(month<10)?"0"+month?String.valueOf(month)
		String datestr1=String.format("%d年%s月%d日 %d:%d:%s\n", year,(month < 10) ? "0" + month : String.valueOf(month),day,hour,minute,
				(second<10)?"0"+second:String.valueOf(second));
				//三目运算目的是为了判断是否小于10,输出0*凑齐两位数
		System.out.println(datestr1);
		

修改当前时间

		c.add(Calendar.DAY_OF_MONTH, -1);//设置前一天,得到天数(参考下面习题)
		//设置时间要年月日时分秒
		c.set(3000, 8, 15, 18, 30, 1);
		//设置过的时间要重新获取
		 year=c.get(Calendar.YEAR);
		 month=c.get(Calendar.MONTH);//month从0开始
		 day=c.get(Calendar.DAY_OF_MONTH);//月份中的天
		 hour=c.get(Calendar.HOUR_OF_DAY);
		 minute=c.get(Calendar.MINUTE);
		 second=c.get(Calendar.SECOND);
		 String datestr2=String.format("%d年%s月%d日 %d:%d:%s\n", year,(month < 10) ? "0" + month : String.valueOf(month),day,hour,minute,
					(second<10)?"0"+second:String.valueOf(second));
			System.out.println(datestr2);
		

设置过的时间记得重新获取,否则返回原来结果

如何实现Date类和Calendar类的相互转化

	Calendar转换为Date**********************************
		方法1:
		Calendar c1=Calendar.getInstance();
		Date d1=c1.getTime();
		long time = d1.getTime();
		方法2:
		Calendar calendar=Calendar.getInstance();
		calendar.getTime();
		Date date=new Date(calendar.getTimeInMillis());
	Date->Calendar**************************************
		Date d2=new Date();
		c1.setTimeInMillis(d2.getTime());

数据库日期和java日期相互转换

		java.util.Date ud=new java.util.Date();
		java.sql.Date sd=new java.sql.Date(ud.getTime());
		
		java.sql.Date sd2=new java.sql.Date(1000L);
		java.util.Date ud2=new java.util.Date();

注意:sql的date构造函数有参数(long time)

Date转化为字符串,字符串转化为Date

特别添加:(返回问价年最后一次被修改的时间)
		("yyyy-MM-dd:HH:mm:ss")年月日时分秒
		Date d=new Date(f.lastModified());//Date的构造方法
		System.out.println(f.lastModified());// 返回long 
		//1566282192568
		Date d=new Date(f.lastModified());
		String s=new SimpleDateFormat("yyyy-MM-dd:HH:mm:ss").format(d);
		System.out.println(s);
			//将date转化为字符串,并输出
			DateFormat df=new SimpleDateFormat("YYYY/MM/dd");
			Date d5=new Date();
			String da=df.format(d5);
			System.out.println(da);
			
			//将字符串转化为date
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			   try {
				Date bir= sdf.parse(s);//抛出解析异常(最好抛出throw)****************
				System.out.println(bir);
			} catch (ParseException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

关于日期的两道题:

输入当前年份,求取2月的天数
思路:利用日期,三月的前一天就是2月的天数

	public static void main(String[] args) {
		Calendar c=Calendar.getInstance();
		String  s=new Scanner(System.in).next();
		int year=Integer.parseInt(s);
		c.set(year, 2, 1);//外国的2月相当于3月
		c.add(Calendar.DAY_OF_MONTH, -1);//设置三月的前一天,得到天数
		System.out.println(c.get(Calendar.DAY_OF_MONTH));
	}

输入未来的年月日,计算当前离未来还有多久?

	public static void main(String[] args) throws ParseException {
				String s=new Scanner(System.in).next();//输入未来日子
				//将字符串转化为date
			    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");	
				Date bir= sdf.parse(s);//字符串解析抛出异常
				//System.out.println(bir);
				long a1=bir.getTime();
				long a2=new Date().getTime();
			 	long a3=a1-a2;
			 System.out.println(a3/1000/60/60/24/365);//输出距离现在还有几多年
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值