Java复习笔记13【Date类的简单使用】

来源:互联网 发布:郑州网站seo 编辑:程序博客网 时间:2024/04/29 10:03
package com.lesson11.example;

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

/*
 * 了解java中的日期时间,学会时间格式的转化
 * */
/*
 * 在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,
 * 所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理。
 * 简单了解一下Date类的使用。
 * */
/*
 * 【总结】
 *  1.Date类用于对时间的处理,也可获取当前系统时间:Date today = new Date();
 *  2.Date类型和String类型相互转化:使用SimpleDateFormat类
 *     (1)实例化并设置时间格式:
 *SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
 *     (2)Date->String:使用format方法
               String str = sdf.format(Date date);
 *     (3)String->Date:使用parse方法
               Date date = sdf.parse(String str);
 * 3.Date类型和long类型相互转化(时间的计算通过毫秒换算)
 *     (1)Date->long:通过getTime()方法可以获取当前时间对应基准点的毫秒数
               long l = date.getTime()
 *     (2)long->Date:将毫秒数作为参数传入Date中可获取换算后的时间
               Date date = new Date(l);
 * */
public class DateExample {
 public static void main(String args[]){
  /*
   * Date类可以获取系统时间:星期 月份 日期 时间 年份
   * */
  Date today = new Date();
  System.out.println(today);//Sun Apr 26 22:02:59 CST 2015
  //Date date = new Date(2008-1900,8,8);
  //使用带参的构造方法指定日期,其中年份减去1900,因为是以1900年作为基准
  //System.out.println(date);//Mon Sep 08 00:00:00 CST 2008
  //现在该构造方法不建议使用,已由Calendar.set(year + 1900, month, date)代替
 
  /*
   * 获取具体时间信息(以下方法现均不建议使用)
   * */
  int year = today.getYear() + 1900;//获取年份,以1900年为基准,需要+1900
  int month = today.getMonth() + 1;//获取月份,月份是从0开始计算,所以需要+1
  int day = today.getDate();//获取日期
  int week = today.getDay();//获取星期,用数字表示星期,规定周日为0
  //System.out.println("year="+year+",month="+month+",day="+day+",week="+week);
 
  DateExample de = new DateExample();
  de.formatTime(today);
  de.countTime(today);
 }
 
 /*
  * 使用SimpleDateFormat类中的方法:format()和parse()
  * 功能:时间格式的转化   Date类型<-->String类型
  * ---------------------------------------------
  * 类:SimpleDateFormat
  * 构造方法:SimpleDateFormat()
  *  SimpleDateFormat(String pattern)
  * 参数:String pattern 描述时间日期的格式
  * ---------------------------------------------
  * 方法:public StringBuffer format(Date date)
  * 功能:将给定的时间转化成规定格式的字符串
  * 参数:Date 需要转化的日期
  * 返回值:StringBuffer
  * ---------------------------------------------
  * 方法:public Date parse(String text)
  * public Date parse(String text,ParsePosition pos)
  * 功能:解析从 pos 给定的索引处开始的文本。如果解析成功,则将 pos 的索引更新为所用
  * 最后一个字符后面的索引(不必对直到字符串结尾的所有字符进行解析),并返回解析
  * 后得到的日期。更新后的 pos 可以用来指示下次调用此方法的起始点。如果发生错误,
  * 则不更改 pos 的索引,并将 pos 的错误索引设置为发生错误处的字符索引,并且
  * 返回 null。
  * 参数:String text 字符串,部分需要转化成时间
  * ParsePosition pos 具有以上所述的索引(开始解析的位置)和
  *      错误索引信息的 ParsePosition 对象
  * 返回值:Date 从字符串里解析出来的时间,如果发生错误,则返回null
  * 注意:需要抛出异常
  * ---------------------------------------------
  * 格式:必须符合SimpleDateFormat("……")中的格式
  * */
 public void formatTime(Date today){
  //首先必须创建SimpleDateFormat类对象
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  /*
   * 例:将系统时间转化成格式为YYYY-MM-DD hh:mm:ss的格式
   * */
  String dateStr = sdf.format(today);
  System.out.println(dateStr);
  /*
   * 例:将字符串转化成时间日期
   * */
  try {
   String str = "2008-08-08 12:11:10";
   Date date = sdf.parse(str);
   System.out.println(date);//Fri Aug 08 12:11:10 CST 2008
   String str2 = "ad2008-08-08 12:11:10";
   Date date2 = sdf.parse(str2, new ParsePosition(2));
   System.out.println("解析指定开始位置的字符串得到:"+date2);
   //解析指定开始位置的字符串得到:Fri Aug 08 12:11:10 CST 2008
  } catch (ParseException e) {
   e.printStackTrace();
  }
 }
 
 /*
  * 方法:public long getTime()
  * 功能:将Date类型时间转化成long类型,获取today时间对应基准点的毫秒数
  * 参数:无
  * 返回值:long 转化后的毫秒数
  * */
 public void countTime(Date today){
  /*
   * 例:计算20天后的时间(计算时间都需要转化成毫秒计算)
   * */
  long todayTime = today.getTime();//将今天的时间转化成long型的毫秒数
  System.out.println("today时间对应基准点的毫秒数:" + todayTime);
  //20天=20 * 24h * 60min * 60s * 1000
  long day20 = todayTime + 20 * 24 * 60 * 60 * 1000;
  System.out.println("20天后对应基准点的毫秒数:" + day20);
  //将long类型转化成Date类型时间,直接将long型作为参数传入
  Date after20 = new Date(day20);
  //Date的带参构造方法,能够根据传入的毫秒数初始化时间
  System.out.println("20天后的时间是" + after20);
 }
}


0 0