Java实战常用操作(一)五分钟带你玩转时间类型

举报
小鲍侃java 发表于 2021/09/11 01:07:11 2021/09/11
【摘要】 获取时间 关于date 有以下获取时间的方式: java.util.Date date= new java.util.Date(); System.out.println(date...

获取时间

关于date 有以下获取时间的方式:

        java.util.Date date= new java.util.Date();
		System.out.println(date);

		java.util.Calendar date4 = java.util.Calendar.getInstance();
		System.out.println(date4);//date4是对象,可以用date.得到时间方法
		
		//sql语句用
		java.sql.Date date1 = new java.sql.Date(new java.util.Date().getTime());
		System.out.println(date1);
		java.sql.Timestamp date2 = new java.sql.Timestamp(new java.util.Date().getTime());
		System.out.println(date2);
		java.sql.Time date3 = new java.sql.Time(new java.util.Date().getTime());
		System.out.println(date3);
  
 

总结:使用Calendar 获取年,时,分,秒等更简单。但是获取日期是重0开始的。

Date的格式化

格式化使用SimpleDateFormat

// Date转String
		java.text.SimpleDateFormat f = new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		System.out.println("Date转String:"+f.format(date4.getTime()));
// String转Date
		Date date5 = null;
		try {
			date5 = f.parse("2018-01-22 08:31:28");
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.print("String转Date:"+date5);

  
 

注意:
SimpleDateFormat 不是线程安全的。
解决方法:
1.创建新实例。
2.使用synchronized关键字。

 private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      
    public static String formatDate(Date date)throws ParseException{
        synchronized(sdf){
            return sdf.format(date);
        }  
    }

  
 

3.使用ThreadLocal。

计算差值

计算差值有两种方式
1.获获取毫秒数,然后换成天数。

Long date6 = date.getTime() - date5.getTime();
System.out.println(date6 /(1000 * 24 * 60 * 60));

  
 

2.用Calendar 类获取年月日进行计算,先获得时分秒。然后两个日期按照逻辑计算,获得的时分秒为int类型。

        java.util.Calendar date7 = java.util.Calendar.getInstance();
		java.util.Calendar date8 = java.util.Calendar.getInstance();
		System.out.println(date7.get(Calendar.YEAR));
		System.out.println(date7.get(Calendar.MONTH));
		System.out.println(date7.get(Calendar.DAY_OF_MONTH));
		System.out.println(date7.get(Calendar.HOUR));
        //可以把其他时间类型转为Calendar 类型
		date8.setTime(date5);
		System.out.println(date8.get(Calendar.MONTH));

  
 

3.计算某日期X年X月X日后的日期。

date7.add(Calendar.DAY_OF_MONTH, 20);
System.out.println(date7.getTime());

  
 

文章来源: baocl.blog.csdn.net,作者:小黄鸡1992,版权归原作者所有,如需转载,请联系作者。

原文链接:baocl.blog.csdn.net/article/details/82861743

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。