Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 342|回复: 0

[Java基础知识]浅析Java中Date类的应用

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-1 18:04:51 | 显示全部楼层 |阅读模式
    摘要:      Date 类从java 开发包(JDK) 1.0 就开始进化, 当时它只包含了几个取得或者设置一个日期数据的各个部分的方法, 比如说月, 日, 和年. 这些方法现在遭到了批评并且已经被转移到了Calendar类里去了, 我们将在本文中进一步讨论它.
          
         
         
         
         
         这种改进旨在更好的处理日期数据的国际化格式. 就象在JDK 1.1中一样, Date 类实际上只是一个包裹类, 它包含的是一个长整型数据, 表示的是从GMT(格林尼治标准时间)1970年, 1 月 1日00:00:00这一刻之前或者是之后经历的毫秒数.
         

         

         创建一个日期对象
            让我们看一个使用系统的当前日期和时间创建一个日期对象并返回一个长整数的简单例子. 这个时间通常被称为Java 虚拟机(JVM)主机环境的系统时间.
         
       

       
      


    import java.util.Date;

    public class DateExample1 {
        public static void main(String[] args) {
        // Get the system date/time
        Date date = new Date();

        System.out.println(date.getTime());
        }
    } [/code]



    在星期六, 2001年9月29日, 下午大约是6:50的样子, 上面的例子在系统输出设备上显示的结果是 1001803809710. 在这个例子中,值得注意的是我们使用了Date 构造函数创建一个日期对象, 这个构造函数没有接受任何参数. 而这个构造函数在内部使用了System.currentTimeMillis() 方法来从系统获取日期.



    那么, 现在我们已经知道了如何获取从1970年1月1日开始经历的毫秒数了. 我们如何才能以一种用户明白的格式来显示这个日期呢? 在这里类java.text.SimpleDateFormat 和它的抽象基类 java.text.DateFormat 就派得上用场了.






    日期数据的定制格式

    假如我们希望定制日期数据的格式, 比方星期六-9月-29日-2001年. 下面的例子展示了如何完成这个工作:




    import java.text.SimpleDateFormat;
    import java.util.Date;

    public class DateExample2 {

        public static void main(String[] args) {

            SimpleDateFormat bartDateFormat =new SimpleDateFormat("EEEE-MMMM-dd-yyyy");

            Date date = new Date();

            System.out.println(bartDateFormat.format(date));
        }
    }[/code]

          只要通过向SimpleDateFormat 的构造函数传递格式字符串"EEE-MMMM-dd-yyyy", 我们就能够指明自己想要的格式. 你应该可以看见, 格式字符串中的ASCII 字符告诉格式化函数下面显示日期数据的哪一个部分. EEEE是星期, MMMM是月, dd是日, yyyy是年. 字符的个数决定了日期是如何格式化的.传递"EE-MM-dd-yy"会显示 Sat-09-29-01. 请察看Sun 公司的Web 站点获取日期格式化选项的完整的指示.




    将文本数据解析成日期对象

    假设我们有一个文本字符串包含了一个格式化了的日期对象, 而我们希望解析这个字符串并从文本日期数据创建一个日期对象. 我们将再次以格式化字符串"MM-dd-yyyy" 调用SimpleDateFormat类, 但是这一次, 我们使用格式化解析而不是生成一个文本日期数据. 我们的例子, 显示在下面, 将解析文本字符串"9-29-2001"并创建一个值为001736000000 的日期对象.



    例子程序:




    import java.text.SimpleDateFormat;
    import java.util.Date;

    public class DateExample3 {

        public static void main(String[] args) {
            // Create a date formatter that can parse dates of
            // the form MM-dd-yyyy.
            SimpleDateFormat bartDateFormat = new SimpleDateFormat("MM-dd-yyyy");

            // Create a string containing a text date to be parsed.
            String dateStringToParse = "9-29-2001";

            try {
                // Parse the text version of the date.
                // We have to perform the parse method in a
                // try-catch construct in case dateStringToParse
                // does not contain a date in the format we are expecting.
                Date date = bartDateFormat.parse(dateStringToParse);

                // Now send the parsed date as a long value
                // to the system output.
                System.out.println(date.getTime());
            }
            catch (Exception ex) {
                System.out.println(ex.getMessage());
            }
        }
    } [/code]




    使用标准的日期格式化过程

            既然我们已经可以生成和解析定制的日期格式了, 让我们来看一看如何使用内建的格式化过程. 方法 DateFormat.getDateTimeInstance() 让我们得以用几种不同的方法获得标准的日期格式化过程. 在下面的例子中, 我们获取了四个内建的日期格式化过程. 它们包括一个短的, 中等的, 长的, 和完整的日期格式.




    import java.text.DateFormat;
    import java.util.Date;

    public class DateExample4 {

        public static void main(String[] args) {
            Date date = new Date();

            DateFormat shortDateFormat =
            DateFormat.getDateTimeInstance(
            DateFormat.SHORT,
            DateFormat.SHORT);

            DateFormat mediumDateFormat =
            DateFormat.getDateTimeInstance(
            DateFormat.MEDIUM,
            DateFormat.MEDIUM);

            DateFormat longDateFormat =
            DateFormat.getDateTimeInstance(
            DateFormat.LONG,
            DateFormat.LONG);

            DateFormat fullDateFormat =
            DateFormat.getDateTimeInstance(
            DateFormat.FULL,
            DateFormat.FULL);

            System.out.println(shortDateFormat.format(date));
            System.out.println(mediumDateFormat.format(date));
            System.out.println(longDateFormat.format(date));
            System.out.println(fullDateFormat.format(date));
        }
    } [/code]

       注意我们在对 getDateTimeInstance的每次调用中都传递了两个值. 第一个参数是日期风格, 而第二个参数是时间风格. 它们都是基本数据类型int(整型). 考虑到可读性, 我们使用了DateFormat 类提供的常量: SHORT, MEDIUM, LONG, 和 FULL. 要知道获取时间和日期格式化过程的更多的方法和选项, 请看Sun 公司Web 站点上的解释.



    运行我们的例子程序的时候, 它将向标准输出设备输出下面的内容:

    9/29/01 8:44 PM

    Sep 29, 2001 8:44:45 PM

    September 29, 2001 8:44:45 PM EDT

    Saturday, September 29, 2001 8:44:45 PM EDT






      
      相关文章:
      
      
      (0)日期处理例
      
      
      (1)学习日期、日期格式、日期的解析和日期的计算
      
      
      (2)java的日期处理
      
      
      (3)一个处理日期的类
      
      
      (4)打印日期的三种方法
      
      
      (5)格式化输出日期和时间
      
      
      (6)Java 日期选择控件 DateChooser
      
      
      (7)java中的日期和时间处理示例
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-22 21:59 , Processed in 0.391634 second(s), 50 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表