疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java基础Date类的简单使用


 

 Java基础Date类的简单使用

 
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);
}
}