`
sbear
  • 浏览: 46150 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Calendar、Date、DateFormat 日期/时间类

阅读更多

 具体类(和抽象类相对)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天
分享到:
评论

相关推荐

    JAVA System、Math、Date、DateFormat、Calendar

    最后,`Calendar`类是`Date`的一个增强版本,提供了更灵活的日期和时间操作。它支持日历字段,如年、月、日、小时、分钟等,并且可以进行加减操作。`Calendar.getInstance()`可以获取当前的Calendar实例,`calendar....

    Java 之 Date 和 Calendar 实例

    在Java编程语言中,`Date`和`Calendar`类是处理日期和时间的核心组件。这两个类在不同的Java版本中有着不同...虽然Java 8引入了更好的日期时间API,但了解和掌握这两个类的用法对于维护和理解老代码仍然是必不可少的。

    java中时间类Date和Calendar的使用

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

    解析Date & Calendar类

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

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

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

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

    在Java 8及更高版本中,引入了新的日期和时间API,如LocalDate, LocalTime, LocalDateTime和ZonedDateTime,它们提供了更加简洁和强大的日期时间操作方式。然而,对于早期版本的Java,Date和Calendar仍然是重要的...

    Java_Date_日期时间整理

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

    Date日期时间 各种转换

    1. **日期时间类的引入** 在Java中,处理日期时间主要依赖于以下几个类:`java.util.Date`, `java.text.SimpleDateFormat`, `java.util.Calendar`, `java.sql.Timestamp`等。这些类提供了丰富的API来处理日期时间...

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

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

    java中的日期处理类总结

    - `GregorianCalendar`是`Calendar`的一个具体实现,遵循公历(格里高利历),是最常用的日期/时间类。 - 它继承了`Calendar`的所有功能,并且可以根据需要进行更详细的日期和时间操作,如设置闰年、夏令时等。 4...

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

    在 Java 语言中,日期操作类是非常重要的一部分,常用的日期操作类有 Date 类、Calendar 类和 DateFormat 类。下面是对这三个类的详细介绍: Date 类 Date 类是 Java 语言中最基本的日期操作类,位于 java.util ...

    java中日期和时间类.docx

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

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

    - 与Calendar类相似,可以通过set, add和get方法进行日期时间的设置、变更和获取。 以上总结了Java中处理日期和时间的主要类和方法,以及它们的用法和注意点。对于新开发,推荐使用Java 8引入的java.time包中的类,...

    Java常用API

    本课程是《零基础学Java》课程的第六阶段课程,课程内容详实、细致,讲解通俗易懂!本课程采用Eclipse4.9版本进行教学。内容包括以下常用JavaAPI的讲解: 1. Object类/Scanner类 ...7.Date类/DateFormat类/Calendar类

    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扩展、应用服务器的集群策略及...

    swift-DatePicker日期选择器日期时间选择时间选择器

    `DatePicker`在Swift中通过`UIPickerView`类实现,它允许用户通过滚动界面选择特定的日期和时间。创建`DatePicker`可以通过代码或在Storyboard中拖拽添加到视图上。在代码中,你可以这样创建一个`DatePicker`: ```...

    java时间处理工具类--DateUtils

    * 日历字段, 使用Calendar类定义的日历字段常量 * @param offset * 偏移量 * @return Date */ public Date add(int field, int offset) { cal.setTime(this.fiducialDate); cal.add(field, offset); ...

Global site tag (gtag.js) - Google Analytics