java中如何使用时间类型-阿里云开发者社区

开发者社区> 小鲍侃java> 正文

java中如何使用时间类型

简介: java中如何使用时间类型
+关注继续查看


image.png

1.获取时间

关于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开始的。

2.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。

3.计算差值

计算差值有两种方式

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());


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
8636 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
2838 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
10462 0
java8中的时间类LocalDate、LocalTime、LocalDateTime使用总结
java8中新的日期类LocalDate、LocalDateTime使用总结
6310 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
11432 0
【高并发】如何使用Java7中提供的Fork/Join框架实现高并发程序?
位于J.U.C(java.util.concurrent)中,是Java7中提供的用于执行并行任务的框架,其可以将大任务分割成若干个小任务,最终汇总每个小任务的结果后得到最终结果。基本思想和Hadoop的MapReduce思想类似。 主要采用的是工作窃取算法(某个线程从其他队列里窃取任务来执行),并行分治计算中的一种Work-stealing策略
8 0
+关注
小鲍侃java
小作坊架构师。
364
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载