`
shaobo
  • 浏览: 52649 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Java中的日期/时间类,Date、DateFormat、Calendar类

    博客分类:
  • J2SE
阅读更多

具体类(和抽象类相对)java.util.Date
 抽象类java.text.DateFormat 和它的一个具体子类,java.text.SimpleDateFormat
 抽象类java.util.Calendar 和它的一个具体子类,java.util.GregorianCalendar
 具体类可以被实例化, 但是抽象类却不能. 你首先必须实现抽象类的一个具体子类。

 Date类:
 Date类实际上只是一个包裹类, 它包含的是一个长整型数据, 表示的是从GMT(格林尼治标准时间)1970年, 1月1日00:00:00这一刻之前或者是之后经历的毫秒数。

 Date类常用的两个构造函数:
  Date()无参数的构造函数创建的对象可以获取本地当前时间。
  Date(long time)使用一个从GMT(格林尼治标准时间)1970年, 1月1日00:00:00这一刻之前或者是之后经历的毫秒数创建一个Date对象

 Date示例:
  Date date = new Date();
  System.out.println(date.getTime());  //1228061164796
  System.out.println(date.toString());  //Mon Dec 01 00:06:04 CST 2008
 日期数据的定制格式:(DateFormat类、SimpleDateFormat类)
 为了定制日期数据的输出格式,我们可以使用DateFormat的子类SimpleDateFormat。SimpleDateFormat有个常用构造方法:
  public SimpleDateFormat(String pattern)  //pattern指定输出格式

 pattern中可以有如下格式符:
  y,yy:用2位数字表示的"年"替换。
  yyyy:用4位数字表示的"年"替换。
  M,MM:用2位数字表示的"月"替换。
  MMM:用汉字表示的"月"替换。
  d,dd:用2位数字表示的"日"替换。
  H,HH:用2位数字表示的"时"替换。
  m,mm:用2位数字表示的"分"替换。
  s,ss:用2位数字表示的"秒"替换。
  E:用"星期"替换
 pattern中的普通ASCII字符,必须用单引号“'”字符括起来,如:
  pattern="'time':yyyy-MM-dd";

 用SimpleDateFormat对象调用如下方法可以定制某时间输出格式:
  public String format(Date date)
 实例:
  SimpleDateFormat sdf = new SimpleDateFormat(" 'time':yyyy-MM-dd");
  System.out.println(sdf.format(date));  // time:2008-12-01
 假如我们由一个文本字符串包含一个格式化了的日期对象,现在从这个字符串中解析日期数据创建一个日期对象。
 使用SimpleDateFormat对象调用如下函数创建一个Date对象:
  Date java.text.DateFormat.parse(String source)
 实例:
  String str="2008-12-1";
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  try{
   Date date=sdf.parse(str);
   System.out.println(date);  //Mon Dec 01 00:00:00 CST 2008
  }
  catch(Exception ex){
   System.out.println(ex.getMessage());
  }
 使用标准的日期格式化过程:
  常用的两个获取日期/时间格式器的方法:
  public static final DateFormat getDateTimeInstance() //具有默认语言环境的默认格式化风格。
  public static final DateFormat getDateTimeInstance(int dateStyle, int timeStyle) //具有默认语言环境的给定日期和时间格式化风格。

 实例:
  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));  //08-12-1 下午1:28
  System.out.println(mediumDateFormat.format(date));  //2008-12-1 13:28:31
  System.out.println(longDateFormat.format(date));  //2008年12月1日 下午01时28分31秒
  System.out.println(fullDateFormat.format(date));  //2008年12月1日 星期一 下午01时28分31秒 CST

 Calendar类:
 使用Date类可以创建日期/时间对象,使用DateFormat类,SimpleDateFormat类可以对Date对象进行格式化。
 使用Calendar类可以设置和获取日期/时间数据的特定部分。
 
 Calendar类是抽象类不能实例化对象,但是可以使用Calendar类的static方法getInstance(),可以初始化一个日历对象。如:
  Calendar calendar = Calendar.getInstance();
 然后可以使用该calendar对象可以调用方法,如:(当year取负数时表示公元前)
  public final void set(int year, int month, int date)
  public final void set(int year, int month, int date, int hourOfDay, int minute)
  public final void set(int year, int month, int date, int hourOfDay, int minute, int second)

 Calendar类对象调用如下方法可以获取有关年份,月份,小时,星期等信息,参数field的有效值由Calendar的静态常量指定
  public int get(int field)
 实例:
  calendar.get(Calendar.MONTH);  //返回一个整数,如果该整数是0表示一月,11表示12月
 Calendar对象调用如下方法可以把时间表示为毫秒:
  public long getTimeInMillis()
 Calendar使用实例:
  Calendar calendar = Calendar.getInstance();
  calendar.setTime(new Date());
  String  年 = String.valueOf(calendar.get(YEAR)),
    月 = String.valueOf(calendar.get(MONTH)+1),
    日 = String.valueOf(calendar.get(DAY_OF_MONTH)),
    星期 = String.valueOf(calendar.get(DAY_OF_WEEK)-1);
  
  int hour = calendar.get(HOUR_OF_DAY),
   minute = calendar.get(MINUTE),
   second = calendar.get(SECOND);
  
  System.out.println("现在的时间是:");
  System.out.println(年+"年"+月+"月"+日+"日"+"星期"+星期);
  System.out.println(hour+"时"+minute+"分"+second+"秒");
  
  calendar.set(2004,7,8);  //将日历翻到2004年8月8日,注意7表示八月
  long time2004 = calendar.getTimeInMillis();
  calendar.set(2008,7,8);  //将日历翻到2008年8月8日
  long time2008 = calendar.getTimeInMillis();
  long 相隔天数 = (time2008-time2004)/(1000*60*60*24);
  System.out.println("2008年8月8日和2004年8月8日相隔"+相隔天数+"天");

 输出结果:
  现在的时间是:
  2008年12月1日星期1
  14时41分45秒
  2008年8月8日和2004年8月8日相隔1461天
0
1
分享到:
评论

相关推荐

    JAVA System、Math、Date、DateFormat、Calendar

    在这个"JAVA System、Math、Date、DateFormat、Calendar"的主题中,我们将深入探讨Java标准库中的几个核心类,它们在各种程序设计场景中扮演着至关重要的角色。 首先,`System`类是Java中最基础的类之一,位于`java...

    java中时间类Date和Calendar的使用

    Java中的时间类`Date`和`Calendar`是处理日期和时间的核心组件,它们在Java编程中扮演着重要的角色。在Java中,`Date`类主要用来表示特定的瞬间,精确到毫秒。而`Calendar`类则是一个抽象类,提供了比`Date`更灵活的...

    Java 之 Date 和 Calendar 实例

    在Java编程语言中,`Date`和`Calendar`类是处理日期和时间的核心组件。这两个类在不同的Java版本中有着不同的使用方式和功能,对于理解Java时间处理机制至关重要。本篇将深入探讨`Date`和`Calendar`类的实例应用。 ...

    欧柏泰克:Java常用类库--日期操作类

    欧柏泰克:Java常用类库--日期操作类 在 Java 语言中,日期...Date 类、Calendar 类和 DateFormat 类是 Java 语言中常用的日期操作类,每个类都有其特点和应用场景,在实际开发中可以根据需要选择合适的日期操作类。

    Java_Date_日期时间整理

    Java 中的日期时间处理是非常重要的,以下是 Java 中日期时间整理的知识点总结: 一、获取服务器端当前日期 在 Java 中,可以使用 `java.util.Date` 类来获取服务器端当前日期。可以使用以下代码来获取当前日期: ...

    Java基础之Date和Calendar类的使用方法

    Java中的Date和Calendar类是处理日期和时间的核心组件。Date类主要用于表示特定的瞬间,精确到毫秒。在早期版本的Java中,Date类的设计受到批评,因为它的API不直观且容易导致错误。为了解决这些问题,大部分日期和...

    java中的日期处理类总结

    Java中的日期处理涉及到多个类,包括Date、Calendar、GregorianCalendar以及日期格式化类如DateFormat和SimpleDateFormat。这些类主要用于管理、操作和格式化日期和时间。以下是对这些类的详细说明: 1. **Date类**...

    Java精华版 chm Java API、嵌套类和内部类、与时间有关的类Date,DateFormat,Calendar、文件与流、Java变量类型间的相互转换、Java与Web、用连接池提高Servlet访问数据库的效率、Java扩展、应用服务器的集群策略及Java EE 5.0、Java IO 包中的Decorator模式等

    本Java精华内容深入Java API、嵌套类和内部类、与时间有关的类Date,DateFormat,Calendar、文件与流、Java变量类型间的相互转换、Java与Web、用连接池提高Servlet访问数据库的效率、Java扩展、应用服务器的集群策略及...

    解析Date & Calendar类

    Java中的Date和Calendar类是处理日期和时间的核心工具。这两个类在Java编程中扮演着重要角色,特别是在处理日期计算、格式化以及与数据库交互时。 1. **java.util.Date** - **字符串转时间为Date对象**: 通过`...

    java中日期和时间类.docx

    ### Java中的日期与时间类详解 #### 一、概述 在Java编程中,处理日期和时间是非常常见的需求。Java提供了多种类来支持日期和时间的操作,主要包括`java.util.Date`、`java.text.DateFormat`及其子类`java.text....

    java中的日期处理类总结:DateCalendarGregorianCalendarDateFormatSimpleDateFormat类

    ### Java中的日期处理类总结:Date、Calendar、GregorianCalendar、DateFormat、SimpleDateFormat 在Java编程中,日期时间处理是常见的需求之一。为了更好地理解和使用Java中的日期处理类,本篇文章将对Date、...

    第6天(常用API【Date、DateFormat、Calendar、Math、System、包装类、正则表达式】)v20170

    `java.util.Calendar`是日期和时间的日历类,提供了比`Date`更灵活的操作。它可以设置和获取各种日期字段,如年、月、日、小时等。 ### 4. 基本类型包装类 Java为每个基本数据类型提供了对应的包装类,如`Integer`...

    java中的日期处理类总结.pdf

    在Java 8之前,主要的类包括java.util.Date, java.util.Calendar和java.text.DateFormat。Java 8引入了java.time包,提供了更加强大和易用的日期时间API,但在许多遗留系统中仍然可以找到旧的API。 ### java.util....

    Java中的日期时间类.doc

    ### Java中的日期时间类知识点详解 #### 一、概述 在Java编程中,处理日期与时间是一项常见的需求。为了满足这种需求,Java提供了多种类来处理日期和时间相关的操作,主要包括`java.util.Date`、`java.text....

    史上最全java时间类date的处理

    根据给定的信息,本文将详细...以上就是对给定文件中涉及的Java时间类`Date`处理的详细介绍,涵盖了从获取当前时间到复杂的日期计算等多个方面。这些方法可以帮助开发者更好地理解和使用Java中的日期类及其相关功能。

    Java中日期时间处理.docx

    本文将详细讲解Java中处理日期时间的主要类,包括Date、Calendar、GregorianCalendar以及DateFormat和SimpleDateFormat。 首先,Date类是Java中最早用于处理日期时间的类,但现在已经被弃用,主要因为它的API设计...

    16_常用API_第2天(正则表达式、Date、DateFormat、Calendar)_讲义

    在Java编程语言中,正则表达式、Date、DateFormat和Calendar是四个非常重要的API,它们在处理字符串匹配、日期和时间操作中起着关键作用。本文将深入探讨这些概念及其在实际开发中的应用。 首先,让我们来了解一下...

Global site tag (gtag.js) - Google Analytics