`
manoo
  • 浏览: 14071 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Java中时间类型简单的思考

    博客分类:
  • Java
阅读更多
1、java.util.Date及其格式化
Date 类有两个附加的功能,一是表示年月日时分秒,二是对日期字符进行格式化和分析。但是由于API不符合国际规范。于是在JDK1.1中,Calendar类用于日期和时间域之间的转换;抽象类DateFormat对日期字符串进行格式化和分析,SimpleDateFormat类为DateFormat的实现类。

2、Java统计从1970年1月1日起的毫秒的数量表示日期。也就是说,例如,1970年1月2日,是在1月1日后的86,400,000毫秒。同样的,1969年12月31日是在1970年1月1日前86,400,000毫秒。

Java的Date类使用long类型纪录这些毫秒值.因为long是有符号整数,所以日期可以在1970年1月1日之前,也可以在这之后。Long类型表示的最大正值和最大负值可以轻松的表示290,000,000年的时间,这适合大多数人的时间要求。Date只是一个对long值的对象封装,它表现出的年月日的时间描述,只是它toString()方法提供的。

//打印出年,月,日,小时,分钟,秒还有时区
        Date date1 = new Date();
        System.out.println("-------------------date1--------------------\n"+date1);
        //获得当前时间距离1970/1/1 0:0的毫秒差
        long datel1 = date1.getTime();
        //获得当前时间的另一个方法,为当前时间距离1970/1/1 0:0的毫秒差
        long datel2 = System.currentTimeMillis();
        //将时间以年,月,日,小时,分钟,秒还有时区形式打印出来
        String dates1 = date1.toString();
        System.out.println("-------------------datel1--------------------\n"+datel1);
        System.out.println("-------------------datel2--------------------\n"+datel2);
        System.out.println("-------------------dates1--------------------\n"+dates1);

可以得到结果是:
-------------------date1--------------------
Tue Mar 26 16:35:33 CST 2013
-------------------datel1--------------------
1364286933197
-------------------datel2--------------------
1364286933236
-------------------dates1--------------------
Tue Mar 26 16:35:33 CST 2013

3、SimpleDateFormat类是DateFormat的实现类。新建SimpleDateFormat对象的时候,可以规范时间的格式。然后通过format()方法将Date转化成String 。parse可以将日期字符串转换成Date类型
        //定义时间格式,默认是13-3-26 下午2:16格式
        SimpleDateFormat simpDatef1 = new SimpleDateFormat();
        SimpleDateFormat simpDatef2 = new SimpleDateFormat("MM-dd-yyyy hh:mm:ss");
        SimpleDateFormat simpDatef3 = new SimpleDateFormat("MM-dd-yyyy");
        String datef1 = simpDatef1.format(date1);
        String datef2 = simpDatef2.format(date1);
        String datef3 = simpDatef3.format(date1);
        //可以利用parse方法将String转化成Date时间类型
        String dates2 = "03-12-2013";
        try {
            
            Date date4 = simpDatef3.parse(dates2);
            String dates3 = simpDatef3.format(date4);
            System.out.println("-------------------date4--------------------\n"+date4);
            System.out.println("-------------------dates3--------------------\n"+dates3);
        } catch (ParseException e) {
           e.printStackTrace();
        }
        System.out.println("-------------------datef1--------------------\n"+datef1);
        System.out.println("-------------------datef2--------------------\n"+datef2);
        System.out.println("-------------------datef3--------------------\n"+datef3);

结果是:
-------------------date4--------------------
Tue Mar 12 00:00:00 CST 2013
-------------------dates3--------------------
03-12-2013
-------------------datef1--------------------
13-3-26 下午4:35
-------------------datef2--------------------
03-26-2013 04:35:33
-------------------datef3--------------------
03-26-2013
4、timestamp
   在开发web应用中,针对不同的数据库日期类型,我们需要在我们的程序中对日期类型做各种不同的转换。若对应数据库数据是oracle的Date类型,即只需要年月日的,可以选择使用java.sql.Date类型,若对应的是MSsqlserver数据库的DateTime类型,即需要年月日时分秒的,选择java.sql.Timestamp类型。
      try {
            String sToDate = "2005-8-18";//用于转换成java.sql.Date的字符串
            String sToTimestamp = "2005-8-18 14:21:12.123";//用于转换成java.sql.Timestamp的字符串
            Date date4 = string2Date(sToDate);
            Timestamp datet1 = string2Time(sToTimestamp);
            System.out.println("---------------------------Date:\n"+date4.toString());//结果显示
            System.out.println("---------------------------Timestamp:\n"+datet1.toString());//结果显示
           }catch(Exception e) {
            e.printStackTrace();
      }
      public final static java.sql.Date string2Date(String dateString)
            throws java.lang.Exception {
            DateFormat dateFormat;
            dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            //dateFormat.setLenient(false);
            java.util.Date timeDate = dateFormat.parse(dateString);//util类型
            java.sql.Date dateTime = new java.sql.Date(timeDate.getTime());//sql类型
            return dateTime;
    }
    public final static java.sql.Timestamp string2Time(String dateString) 
            throws java.text.ParseException {
            DateFormat dateFormat;
            dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss.SSS");//设定格式
            //将String通过parse转化成Date
            java.util.Date timeDate = dateFormat.parse(dateString);//util类型
            //再将Date转换成timestamp
            java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime());//Timestamp类型,timeDate.getTime()返回一个long型
            return dateTime;
    }

结果是:
---------------------------Date:
2005-08-18
---------------------------Timestamp:
2005-08-18 14:21:12.123

5、小结

Date -> timestamp
           dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss.SSS");//设定格式
           java.util.Date timeDate = dateFormat.parse(dateString);//util类型
           java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime());//Timestamp类型,timeDate.getTime()返回一个long型

Date -> String
           SimpleDateFormat simpDatef2 = new SimpleDateFormat("MM-dd-yyyy hh:mm:ss");
           String datef2 = simpDatef2.format(date1);


String -> Date
         Date date4 = simpDatef3.parse(dates2);  

分享到:
评论

相关推荐

    java 编程入门思考

    2.2.3 Java中的数组 2.3 绝对不要清除对象 2.3.1 作用域 2.3.2 对象的作用域 2.4 新建数据类型:类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用...

    java与模式的思考

    例如,Java中的`DateFormat`类就是一个静态工厂,可以根据需要返回不同的日期格式化对象。 - 简单工厂模式的优点在于它将产品创建的责任分割开,客户端只需要消费产品而无需关心如何创建。但它的缺点在于,当产品...

    Java课程设计-简单计算器(含完整源代码)

    【Java课程设计-简单计算器】是一项面向计算机科学与技术专业学生的实践任务,旨在通过实现一个基础的计算功能软件,让学生巩固Java编程基础知识,提升面向对象编程能力,以及加强实际操作和创新思维。在这个项目中...

    像计算机科学家一样思考 java

    ### 如何像计算机科学家一样思考:Java版本 #### 前言与背景 《像计算机科学家一样思考 Java》是一本由艾伦·唐尼撰写的关于如何通过学习Java编程语言来培养计算机科学思维的书籍。本书是第四版,首次出版于1999年...

    Java学习心得分享

    总之,学习Java并非一蹴而就的过程,它需要时间和耐心。对于初学者来说,最重要的是树立正确的心态,即“动手,动脑,动嘴,静心”。只有坚持不懈地实践、思考并提问,才能在Java这条道路上越走越远。此外,还应当...

    thinking in java(English)

    书中的内容包括Java的基础知识,如数据类型、运算符、控制流程以及面向对象编程的核心概念,如类、继承、多态和接口等。而对Java集合框架的章节则是特别推荐的,因为它不仅详细解释了集合框架的工作原理,还提供了...

    <好书>java解惑(java puzzlers),过来挑战吧

    7. Java API使用:书中还可能涉及各种内置库的使用,如IO流、NIO、日期时间API等,以及如何避免使用已废弃的方法。 通过阅读《Java解惑》,开发者不仅能解决当前遇到的问题,还能提前预防未来可能出现的陷阱,提高...

    java小游戏jar

    在这个名为“球球”的游戏中,我们可以推测它可能是一个简单的物理模拟游戏,比如“弹球”或者“2D碰撞”。在Java中实现这样的游戏,开发者可能使用了Java AWT或Swing库来创建图形用户界面(GUI),这两个库提供了...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     11.1.2 Java时间和日期类型的Hibernate映射类型  11.1.3 Java大对象类型的Hibernate映射类型  11.1.4 JDK自带的个别Java类的Hibernate映射类型  11.1.5 使用Hibernate内置映射类型  11.2 客户化映射类型  ...

    java常用API-适合初学者

    通过学习以上这些Java API,初学者可以逐步建立起对Java编程的基本理解,并能够编写出简单的Java应用程序。随着经验的积累,可以深入研究更多的高级特性和框架,提升自己的编程技能。记得实践是检验真理的唯一标准,...

    Java机试相关题目34题

    6. 日期校验脚本编写:脚本校验日期需要使用Java的日期和时间API,如java.util.Date类或者java.time包下的类,编写程序对日期格式进行校验。 7. 字符串反转方法实现:字符串的反转是指将字符串中的字符顺序颠倒。...

    java实验指导书.docx

    - 实践编写简单Java程序,如打印名字,或找出特定条件的数字序列,锻炼基本编程能力。 - 实验报告要求填写完整,包括实验日期、选课序号,并对比Application和Applet的区别。 5. **思考题** - Java Application...

    java程序(学习代码)

    通过这些代码,你可以学习到Java的基本语法,类和对象的创建,文件I/O,数据转换,时间日期处理,以及可能的图形用户界面设计。这些都是Java编程的核心概念,对于理解和掌握这门语言至关重要。在深入学习时,建议...

    java SE第1次实验报告要求

    这些题目可能涵盖了基础的Java编程概念,如变量、数据类型、控制结构(如if语句和循环)、函数的定义与调用,以及面向对象编程的基本概念(类、对象、封装、继承和多态)。 1. 在实验过程中,你需要编写代码来实现...

    java上级实验指导

    思考题部分则涉及字符类型转换和控制语句的使用,如`if...else if`、`if...else`和`while`循环,通过编写程序输出希腊字母表来实践这些概念。 通过这个实验,你将巩固Java开发的基础知识,提高对Java开发环境的熟练...

    JAVA语言程序设计实验指导书

    - Date/Time API:掌握日期时间处理的新API(自Java 8起引入),包括LocalDate、LocalTime等类。 - 输入输出流:学习文件读写的实现方式,包括File类、InputStream/OutputStream等。 #### 3.6 实验六:异常处理 ...

    java学习路线1

    这个路线特别适合那些希望全面学习Java或者迅速准备求职的人,他们可以根据路线中的符号自定义学习路径。 路线特点: 1. **完整性**:覆盖了从基础到高级的所有Java知识点,包括大厂面试所需的技能。 2. **灵活性**...

    Java初学者

    6. 日历计算:第七题需要计算日期在一年中的位置,这可能涉及到日期类(如Java的`java.time.LocalDate`)的使用。 7. 数列求和:第八题是简单的累加,第九题则是阶乘计算,两者都涉及到循环和累乘的概念。 8. 数字...

    ajava注释说明

    在深入探讨Java注释的重要性与应用之前,我们先简要回顾一下给定文件的信息:标题为“ajava注释说明”,描述中强调了这是学习Java的必备文档,并鼓励大家积极学习Java。虽然部分文本似乎包含了乱码或非标准字符,但...

Global site tag (gtag.js) - Google Analytics