=================================================
我的总结:Java中有关日期时间格式的总结
=================================================
1、与日期时间相关的类:
第一:java.util.Date;
第二:java.util.Calender;
第三:java.text.DateFormat
第四:java.text.SimpleDateFormate
2、步骤方法:
1)获取系统日期时间的步骤(使用Date获取):
步骤一 :确定要输出的事件格式 SimpleDateFormate sdf = new SimpleDateFormate("yyyy-MM-dd hh:mm:ss");
步骤二:获取当前时间 Date nowDate = new Date();
步骤三:输出当前时间 System.out.println(sdfdong.format(nowDateDong));
2)获取系统日期时间的步骤(使用Calendar获取):
步骤一 :确定要输出的事件格式 SimpleDateFormate sdf = new SimpleDateFormate("yyyy-MM-dd hh:mm:ss");
步骤二: 获取当前时间 Calendar nowCal = Calendar.getInstance();
步骤三:输出当前时间 System.out.println(sdfdong.format(nowDateDong));
3)日期时间及格式类的相关说明:
(1)SimpleDateFormate类中格式说明:
y 代表年, M代表月,d代表日,h代表时,m代表分,s代表秒
SimpleDateFormate是DateFormate的一个子类,是一个以与语言环境有关的方式来格式化和解析日期的具体类。
它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化
@格式化方法为:formate,将日期格式化为字符串以便输出,返回类型为StringBuilder,参数为Date对象,
使用方法为:String myNowDate = sdf.formate(nowDate)
@解析方法为: parse,将文本解析为确定日期,原型为 Date parse(String text, ParsePosition pos)
返回类型为Date,参数String text为输入的字符串,参数ParPosition pos为从字符串的何处开始解析
使用方法为:Date nowDate = sdf.parse("2010-11-24 14:19:00");
【关注】DateFormate的使用: DateFormat myDateFormat = DateFormate.getDateInstance();获得是默认时区、默认语言下
默认格式日期时间格式;常常使用此类的getDateTimeInstance来设置特定时区、特定语言下的日期时间格式
举例为:
DateFormat df=new SimpleDateFormat("yyyy-MM-dd EE hh:mm:ss");
System.out.println(df.format(new Date()));
Date date = new Date();
DateFormat shortDate=DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
DateFormat mediumDate =DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);
DateFormat longDate =DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
DateFormat fullDate =DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
System.out.println(shortDate.format(date));
System.out.println(mediumDate.format(date));
System.out.println(longDate.format(date));
System.out.println(fullDate.format(date));
08-4-15 下午3:24
2008-4-15 15:24:31
2008年4月15日 下午03时24分31秒
2008年4月15日 星期二 下午03时24分31秒CST
(2)Calendar的使用:
常使用Calendar的方法为:getInstance(), add(), get(), set(), getTime(), setTime(), set(), getMaxium(),
getActualMaximum(),getActualMinimum()
@使用getInstance生成Calendar对象:Calendar rightNow = Calendar.getInstance();
【注意】getInstance方法有4个重载,用于获取设置的时区、语言环境下的一个日历,
无参数是获取默认时区和语言的日历
@使用add()方法来改变特定日期和时间(如月的加减,日的加减):
abstract void add(int field, int amount) ;
使用示例: 求10小时后的时间
java.util.Calendar Cal=java.util.Calendar.getInstance();
Cal.setTime(dateOper);
Cal.add(java.util.Calendar.HOUR_OF_DAY,10); //如果是10小时前的话,-10即可
System.out.println("date:"+forma.format(Cal.getTime()));
@使用get()方法来获取日历中的一个特定字段:int get(int field); //返回给定日历字段的值
使用举例:int daysofYear = nowCal.get(Calendar.DATE_OF_YEAR);
@使用set()方法来获取
@使用getTime()方法来获取当前时间: Date getTime(); //返回一个表示此 Calendar 时间值
//(从历元至现在的毫秒偏移量)的 Date 对象
@使用setTime()方法:void setTime(Date date); //使用给定的 Date 设置此 Calendar 的时间。
@使用set()方法:set()方法有4个重载,分别为
void set(int field, int value) ; //将给定的日历字段设置为给定值
void set(int year, int month, int date) ; //设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值
void set(int year, int month, int date, int hourOfDay, int minute) ; //设置日历字段 YEAR、MONTH、
// DAY_OF_MONTH、HOUR_OF_DAY 和 MINUTE 的值
void set(int year, int month, int date, int hourOfDay, int minute, int second) ; //设置字段 YEAR、
//MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值
@使用getMaxium()方法来获取给定日历字段的最大值:abstract int getMinimum(int field);
参数为int field,用来设定年,月,日,时,分,秒等字段
@使用getActualMaximum()方法来获取日历字段中可能拥有的最大值: int getActualMaximum(int field) ;
使用getActualMinimum()方法来获取日历字段中可能拥有的最小值: int getActualMinimum(int field) ;
(3)Date的使用方法:
主要的使用是用于获得当前的举例格林威治时间(1970年1月1日 00:00:00),常用的方法不多
使用实例:求两个日期之间相隔的天数:
java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd");
java.util.Date beginDate= format.parse("2007-12-24");
java.util.Date endDate= format.parse("2007-12-25");
long day=(date.getTime()-mydate.getTime())/(24*60*60*1000);
System.out.println("相隔的天数="+day);
一年前的日期:
java.text.Format formatter=new java.text.SimpleDateFormat("yyyy-MM-dd");
java.util.Date todayDate=new java.util.Date();
long beforeTime=(todayDate.getTime()/1000)-60*60*24*365;
todayDate.setTime(beforeTime*1000);
String beforeDate=formatter.format(todayDate);
System.out.println(beforeDate);
3、附录一个小例子:用于计算距离生日还有多少天
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* 时就日期格式的相关联系
* @author Administrator
* 时间:2010-11-23
* */
public class CalculateBirthday {
/**
* @param str 生日日期
* @return 距离生日多少天
* @throws ParseException
* */
public static long daysBeforeBirthday(String str) throws ParseException{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date birthDay = sdf.parse(str);
Date nowDay = new Date();
Calendar birthCal = Calendar.getInstance();
Calendar nowCal = Calendar.getInstance();
birthCal.setTime(birthDay);
nowCal.setTime(nowDay);
birthCal.set(Calendar.YEAR, nowCal.get(Calendar.YEAR));
int bDayofYear = birthCal.get(Calendar.DAY_OF_YEAR);
int nDayofYear = nowCal.get(Calendar.DAY_OF_YEAR);
if(bDayofYear > nDayofYear){
return (bDayofYear-nDayofYear);
}else if(bDayofYear < nDayofYear){
birthCal.add(Calendar.YEAR, 1);
long distTimeInMills = birthCal.getTimeInMillis() - nowCal.getTimeInMillis();
return distTimeInMills/(24*60*60*1000);
}else{
return 0;
}
}
public static void main(String[] args) throws ParseException{
System.out.println(daysBeforeBirthday("1988-08-28")+"天");
System.out.println(daysBeforeBirthday("1988-03-21")+"天");
System.out.println(daysBeforeBirthday("1990-11-24")+"天");
}
}