Java中日期时间格式的小结

时间:2022-09-21 18:10:06

=================================================
我的总结: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")+"天");
 }
}