`

Calendar、Date、DateFormat时间/日期对象

    博客分类:
  • java
阅读更多

具体类(和抽象类相对)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 之 Date 和 Calendar 实例

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

    JAVA System、Math、Date、DateFormat、Calendar

    例如,`DateFormat.format(date)`将日期对象转换为字符串,而`DateFormat.parse(string)`则将字符串转换为日期对象。 最后,`Calendar`类是`Date`的一个增强版本,提供了更灵活的日期和时间操作。它支持日历字段,...

    java中时间类Date和Calendar的使用

    在`dateFormat()`方法中,使用这两个方法分别获取了日期和日期时间的格式化对象,并将当前日期和时间格式化后输出。 `SimpleDateFormat`是`DateFormat`的子类,允许程序员指定日期和时间的格式。在`...

    解析Date & Calendar类

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

    Date日期时间 各种转换

    在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常用类库--日期操作类

    // 得到日期时间的 DateFormat 对象 System.out.println("DATE:" + df1.format(new Date())); // 按照日期格式化 System.out.println("DATETIME:" + df2.format(new Date())); // 按照日期时间格式化 } } ``` ...

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

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

    Java_Date_日期时间整理

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

    java操作date对象

    在 Java 中,处理日期和时间主要依赖于 `java.util.Date` 和 `java.text.DateFormat` 这两个核心类。在本文中,我们将深入探讨如何使用这些类来获取、格式化和操作日期。 1. **获取当前时间** 获取当前时间最常用...

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

    最后,我们可以通过`getTime()`方法将修改后的Calendar对象转换回Date,然后再次使用DateFormat进行格式化输出: ```java Date updatedDate = calendar.getTime(); System.out.println(formatter.format(updated...

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

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

    Java中如何使用日期对象

    在Java编程语言中,处理日期和时间是常见的需求之一,特别是在开发涉及日志记录、数据分析、用户界面等领域的...随着Java语言的不断演进,开发者们也应该关注新的日期时间API,以利用其更高级的功能和更简洁的语法。

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

    datePicker.datePickerMode = .dateAndTime // 设置日期和时间选择模式 view.addSubview(datePicker) // 添加到视图 ``` ### 2. 设置日期选择范围 你可以通过设置`minimumDate`和`maximumDate`属性来限制用户可以...

    Java中日期时间处理.docx

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

    android 时间和日期的设置

    此外,`updateLabel()`方法负责根据Calendar对象的当前状态更新TextView的显示内容,通常使用`fmtDateAndTime.format(dateAndTime.getTime())`这样的方式来格式化日期和时间字符串。 ### 结论 通过上述分析,我们...

    String与date的转换

    例如,在处理用户输入的数据、解析文本文件或与数据库交互时,通常需要将字符串转换为日期对象进行进一步的操作,如日期计算、排序等;相反地,也需要将日期对象格式化为特定格式的字符串以便于展示给用户或存储到...

    聊一聊Calendar的使用

    `Date`类代表一个具体的时刻,而`Calendar`则包含更丰富的日期和时间信息。将`Calendar`转换为`Date`: ```java Date date = calendar.getTime(); ``` 反之,从`Date`创建`Calendar`: ```java calendar.setTime...

Global site tag (gtag.js) - Google Analytics