日期和时间类开发心得

 

日期和时间类开发心得
1       修改历史

Version
Change Time
 Author
Description
Effort Hours
1.0
2006-4-28
LevinSoft
方法、资源等
1
1.1
2007-8-28
LevinSoft
增加了:对SimpleDateFormat和DateUtis的比较。String和date之间转换。
增加:常见问题解答
1

2       介绍
这篇文章是对日期和时间进行的相关的内容。主要内容包括:
1.时间的格式标准
2.日期和时间与字符串之间转换方式
3.常用类的使用实例
4.Jsp页面上的调用和显示方式。
5.Apache common lang组件的解释
3       SimpleDateFormat
JDK中的 SimpleDateFormat进行了详细的定义,同时 common lang的时间类也都是基于这个类来进行包装和扩展的。它是DateFormat的具体实现子类。
1.Calendar cal = Calendar.getInstance();
SimpleDateFormat formatter = new SimpleDateFormat("ssyyyyHHmmddMM");
String Code=formatter.format(cal.getTime());
 
2.new SimpleDateFormat(aMask).parse(strDate)
Wf97程序中, 就是采用这种方式。
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
       try {
           Date date1 = simpleDateFormat. parse (DateUtil.getDateTime( "yyyy-MM-dd HH:mm:ss" , new Date()));
           System. out .println( "simpleDateFormat is: " + date1);
          
           System. out .println( " is : " + DateUtil.convertStringToDate(DateUtil.getDateTime( "yyyy-MM-dd HH:mm:ss" , new Date())));
          
       } catch (ParseException pe){
           pe.printStackTrace();
       }
 
3 .两种方式等价
1 SimpleDateFormat simpleDateFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
//            datZxDs.setValidTime(simpleDateFormat.parse(DateUtil.getDateTime("yyyy-MM-dd HH:mm:ss", getFirstDateInNextMonthOf(new Date()))));
              2 datZxDs.setValidTime(DateUtil.convertStringToDate( "yyyy-MM-dd HH:mm:ss" , DateUtil.getDateTime( "yyyy-MM-dd HH:mm:ss" new Date())));
4       DateFormatUtils
(1)DateFormatUtils.format(date, pattern)
private String periodId = DateFormatUtils.format(new Date(), "yyyyMM");
  or   pattern for yyyy-MM-dd HH:mm:ss
 or    pattern for yyyy-MM-dd HH:mm:ss  or yyyy/MM/dd hh:MM:ss.SSS 其中'S' – MILLISECOND
 or    pattern for yyyy/MM/dd hh:MM:ss.SSS
pattern 是和{@link java.text.SimpleDateFormat} compatible
(2)SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
     theForm.setValidTime(sdf.format(new Date()));
(3)DateFormatUtils.format(datDxmpInfo.getCreateDate(), "yyyy-MM-dd HH:mm:ss")
5       DateFormat
Jdk的类。 SimpleDateFormat是它的具体的实现类,提供了具体的实现类。
public abstract class DateFormat
extends Format  也有很多的方法, 它的子类也提供了更多的方法。
DateFormat is an abstract class for date/time formatting subclasses which formats and parses dates or time in a language-independent manner. The date/time formatting subclass, such as SimpleDateFormat, allows for formatting (i.e., date -> text), parsing (text -> date), and normalization. The date is represented as a Date object or as the milliseconds since January 1, 1970, 00:00:00 GMT.
 
5.1.1            获得类实例
/**
     * Gets the date/time formatter with the default formatting style
     * for the default locale.
     * @return a date/time formatter.
     */
    public final static DateFormat getDateTimeInstance()
    {
        return get(DEFAULT, DEFAULT, 3, Locale.getDefault());
}
 
5.1.2            不同的转换机制
* <p>To format a date for the current Locale, use one of the
 * static factory methods:
 * <pre>
 *  myString = DateFormat.getDateInstance().format(myDate);
 * </pre>
 * <p>If you are formatting multiple dates, it is
 * more efficient to get the format and use it multiple times so that
 * the system doesn't have to fetch the information about the local
 * language and country conventions multiple times.
 * <pre>
 * DateFormat df = DateFormat.getDateInstance();
 * for (int i = 0; i < a.length; ++i) {
 *     output.println(df.format(myDate[i]) + "; ");
 * }
 * </pre>
 * <p>To format a date for a different Locale, specify it in the
 * call to getDateInstance().
 * <pre>
 *  DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE);
 * </pre>
 * <p>You can use a DateFormat to parse also.
 * <pre>
 * myDate = df.parse(myString);
6       DateUtils
Apache common lang 组件
1.对日期进行round、truncate运算
2.时间运算格式。
A suite of utilities surrounding the use of the
 * {@link java.util.Calendar} and {@link java.util.Date} object.</p>
7       DateUtil
USBOSS专有的一个时间类。
(1) DateUtil.convertStringToDate(String aMask, String strDate)
 
(2)Date birthDay = DateUtil.convertStringToDate(theForm.getBirthday());
 
(3) Date submitTime = null;
  Date endSubmitTime = null;
  logger.debug("/n == test");
  try {
        submitTime = DateUtil.convertStringToDate("yyyy-MM-dd HH:mm:ss",
        theForm.getSubmitTime());
8       Calendar
Calendar cal = Calendar.getInstance();
SimpleDateFormat formatter = new SimpleDateFormat("ssyyyyHHmmddMM");
String Code=formatter.format(cal.getTime());
9       Date
1.data.startDate = new Date(result.getTimestamp("start_time").getTime());
10            Apache Common lang组件
10.1       DateUtils
1. DateUtils
1、    A suite of utilities surrounding the use of the * {@link java.util.Calendar} and {@link java.util.Date} object.</p>
2、    提供了向millis转换的机制。提供了很多的变量,也包括:每天的表示方式。
10.2       DateFormatUtils(应用最广泛)
介绍:
* <p>Date and time formatting utilities and constants.</p>
 *
 * <p>Formatting is performed using the
 * {@link org.apache.commons.lang.time.FastDateFormat} class.</p>
 
1.    都是静态方法,不用初始化。
2.    把Date格式化为String
3.    DateFormatUtils.format(date, pattern)
private String periodId = DateFormatUtils.format(new Date(), "yyyyMM");
 or    pattern for yyyy-MM-dd HH:mm:ss   参见:FastDateFormat中的parsePattern方法。
实例:DateFormatUtils.format(new Date(), "yyyy-MM-dd hh:MM:ss.SSS")
4.    pattern {@link java.text.SimpleDateFormat} compatible
10.3       FastDateFormat
1. * <p>FastDateFormat is a fast and thread-safe version of * {@link ava.text.SimpleDateFormat}.</p>
2. FastDateFormat 中的函数parsePattern方法来解析,DateFormatUtils.format(date,pattern)的格式形式。
 
11            JDK时间API
11.1       SimpleDateFormat
* <code>SimpleDateFormat</code> is a concrete class for formatting and
 * parsing dates in a locale-sensitive manner. It allows for formatting
 * (date -> text), parsing (text -> date), and normalization.
11.2       Date类是个非常强大的类,
1、其中,引用了:DateFormat SimpleDateFormat等等. toString 有详细使用的方式。
2、After before compare等函数,使用非常方便。
toLocaleString 是过时,DateFormat.format(Date date)将代替它。
12            工程实例
12.1       获得系统当前时间
不同方式来获得系统当前时间。
1. Date date = new Date();
System.currentTimeMillis());
 2.Calendar calendar = Calendar.getInstance(Locale.CHINESE);
        Date commitDate = calendar.getTime(); // Get system current time
        logger.debug("the current time is: =====/n" + commitDate);     
        datCustomerService.setCommitDate(commitDate);  
12.2       实现对一个日期的月份、天, 进行增加和减少的方法!
    Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
       int month = calendar.get(Calendar.MONTH);
       logger.debug("/n == the month is:" + month + 1); // 0 represents January,
       int newMonth = month + 1;
       calendar.set(Calendar.MONTH, newMonth);
       Date newDate =calendar.getTime();
       return newDate;
12.3       时间间隔统计工具类
1.long startTime = System.currentTimeMillis();
long elapsedTime = System.currentTimeMillis() - startTime
2.org.apache.commons.lang.time.StopWatch
3.org.springframework.util.StopWatch
12.4       在jsp页面显示PO中的时间问题
如果用PO做为jsp中的bean,那么可以,在显示时间的地方,使用:
    < tr class = "FORM" >
      < td width = "20%" class = "FORM" > 受理人 : </ td >    
      < td class = "FORM" >< bean:write name = "DatDxmpInfoObj" property = "staffno" /></ td >         
      < td width = "20%" class = "FORM" > 受理时间 : </ td >    
      < td class = "FORM" >< bean:write name = "saportalzj114DatDxmpInfoForm" property = "createDate" /></ td >         
</ tr >   
NOTE 也可以这样的方式: 因为默认生成为 7 位数字,只要修改到 11 位就可以方便的显示。
13            常见问题解答
1.为什么一个凌晨零点的时间,00:00:00在oracle中不显示?
答:这个是oracle的一个机制。例如: 例如: 2007 - 9 - 1 00:00:00 ,在 oracle 中, 00:00:00 不显示,仅显示: 2007 - 9 - 1
2. 
14            参考资源
1.Jdk
2.Apache common lang

你可能感兴趣的:(apache,Date,String,calendar,Class,Parsing)