日期时间处理类(DateUtil)

/*
 * DataUtil.java
 * Created on 2005-3-8
 * Copyright (c) jobcn.com. All rights reserved.
 */
package com.jobcn.util;

import java.text.DateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

/**
 * 日期工具.
 * @author Loist Loh
 */
public class DateUtil
{
    private Calendar calendar;
    private final DateFormat df_date = DateFormat.getDateInstance();
    private final DateFormat df_time = DateFormat.getTimeInstance();
   
    private final String[] WEEKNAME_CHINESE = new String[]{"星期一","星期二","星期三","星期四","星期五","星期六","星期日"};
    private final String[] WEEKNAME_ENGLISH_LONG = new String[]{"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
    private final String[] WEEKNAME_ENGLISH_SHORT = new String[]{"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};
    private final String[] MONTHNAME_ENGLISH_LONG = new String[]{"January","February","March","April","May","June","July","August","September","October","November","December"};
    private final String[] MONTHNAME_ENGLISH_SHORT = new String[]{"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
    public final static int YEAR = Calendar.YEAR;
    public final static int MONTH = Calendar.MONTH;
    public final static int DAY = Calendar.DAY_OF_MONTH;
    public final static int HOUR = Calendar.HOUR_OF_DAY;
    public final static int MINUTE = Calendar.MINUTE;
    public final static int SECOND = Calendar.SECOND;
   
    /**
     * 构造函数.
     */
    public DateUtil()
    {
        calendar = Calendar.getInstance();
        calendar.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
    }
   
    /**
     * 构造函数.
     * @param calendar Calendar 实例.
     */
    public DateUtil(Calendar calendar)
    {
        this.calendar = calendar;
        calendar.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
    }

    /**
     * 构造函数.
     * @param strDate 字符串形式的日期.
     */
    public DateUtil(String strDate)
    {
        try
        {
            this.calendar = Calendar.getInstance();
            this.calendar.setTime(DateFormat.getDateTimeInstance().parse(strDate));
            calendar.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
        }
        catch (Exception e)
        {
            System.out.println("转换日期出错!");
        }

    }
   
    /**
     * 设置 Calendar 实例.
     * @param calendar Calendar 实例.
     */
    public void setCalendar(Calendar calendar)
    {
        this.calendar = calendar;
        calendar.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
    }
   
    /**
     * 获得日期.
     * @return 日期. 格式 "2005-4-11"
     */
    public String getDate()
    {
        String theResult = "";
        theResult = getDate(false);
        return theResult;
    }
   
    /**
     * 获得日期.
     * fixupLength 为 true 时,日期格式为: 2005-03-01
     * fixupLength 为 false 时,日期格式为: 2005-3-1
     * @param fixupLength 日期格式.
     *   fixupLength 为 true 时,日期格式为: 2005-03-01
     *   fixupLength 为 false 时,日期格式为: 2005-3-1
     * @return 日期. 格式 "2005-04-11"
     */
    public String getDate(boolean fixLength)
    {
        String theResult = "";
        if (fixLength)
        {
            String strMonth = String.valueOf(this.getMonth());
            String strDay = String.valueOf(this.getDay());
            theResult = this.getYear()
               + "-"
               + (strMonth.length() < 2 ? ("0" + strMonth) : strMonth)
               + "-"
               + (strDay.length() < 2 ? ("0" + strDay) : strDay)
               ;
        }
        else
        {
            theResult = df_date.format(calendar.getTime());
        }
        return theResult;
    }
   
    /**
     * 年.
     * @return 年.
     */
    public int getYear()
    {
        return calendar.get(Calendar.YEAR);
    }
   
    /**
     * 月.
     * @return 月.
     */
    public int getMonth()
    {
        return calendar.get(Calendar.MONTH) + 1;
    }
   
    /**
     * 月份的英语完整表述.
     * @return 月份.
     */
    public String getMonthForEnglishLong()
    {
        return MONTHNAME_ENGLISH_LONG[this.getMonth() - 1];
    }
   
    /**
     * 月份的英语简短表述.
     * @return 月份.
     */
    public String getMonthForEnglishShort()
    {
        return MONTHNAME_ENGLISH_SHORT[this.getMonth() - 1];
    }
   
    /**
     * 月份的第几天.
     * @return 月份的第几天.
     */
    public int getDay()
    {
        return calendar.get(Calendar.DAY_OF_MONTH);
    }
   
    /**
     * 星期几, 数字表述.
     * @return 星期几.
     */
    public int getWeek()
    {
        int theResult;
        theResult = calendar.get(Calendar.DAY_OF_WEEK) - 1;
        theResult = theResult == 0 ? 7 : theResult;
        return theResult;
    }
   
    /**
     * 星期几, 中文表述.
     * @return 星期几, 中文表述.
     */
    public String getWeekForChinese()
    {
        return WEEKNAME_CHINESE[this.getWeek() - 1];
    }

    /**
     * 星期几, 英语的完整表述.
     * @return 星期几, 英语的完整表述.
     */
    public String getWeekForEnglishLong()
    {
        return WEEKNAME_ENGLISH_LONG[this.getWeek() - 1];
    }

    /**
     * 星期几, 英语的简短表述.
     * @return 星期几, 英语的简短表述.
     */
    public String getWeekForEnglishShort()
    {
        return WEEKNAME_ENGLISH_SHORT[this.getWeek() - 1];
    }

    /**
     * 时间. 格式: 8:23:25.
     * @return 时间.
     */
    public String getTime()
    {
        //String theResult = "";
        //theResult = df_time.format(calendar.getTime());
        return getTime(false);
    }
   
    /**
     * 时间. 格式:08:23:25.
     * @param fixLength
     * @return
     */
    public  String getTime(boolean fixLength)
    {
        String theResult = "";
        if (fixLength)
        {
            String strHour = String.valueOf(this.getHour());
            String strMinute = String.valueOf(this.getMinute());
            String strSecond = String.valueOf(this.getSecond());
            theResult = (strHour.length() < 2 ? ("0" + strHour) : strHour)
               + ":"
               + (strMinute.length() < 2 ? ("0" + strMinute) : strMinute)
               + ":"
               + (strSecond.length() < 2 ? ("0" + strSecond) : strSecond)
               ;
        }
        else
        {
            theResult = df_time.format(calendar.getTime());
        }
        return theResult;
    }

    /**
     * 小时. 24 小时制.
     * @return 小时.
     */
    public int getHour()
    {
        return calendar.get(Calendar.HOUR_OF_DAY);
    }
   
    /**
     * 分钟.
     * @return 分钟.
     */
    public int getMinute()
    {
        return calendar.get(Calendar.MINUTE);
    }
   
    /**
     * 秒数.
     * @return 秒数.
     */
    public int getSecond()
    {
        return calendar.get(Calendar.SECOND);
    }
   
    /**
     * 日期时间. 格式"2005-04-11 17:37:55"
     * @return 日期时间. 格式"2005-04-11 17:37:55"
     */
    public String getDateTime()
    {
        return this.getDate(true) + " " + this.getTime(true);
    }
   
    /**
     * 获得日期对象的毫秒数.
     * @return 日期对象的毫秒数.
     */
    public long getMillionSecone()
    {
        return this.calendar.getTime().getTime();
    }
   
    /**
     * 获得日期对象.
     * @return 日期对象.
     */
    public Date getDateObject()
    {
        return this.calendar.getTime();
    }
   
    /**
     * 日期加减.
     * @param field 段
     * @param amount 值.
     */
    public void add(int field, int amount)
    {
     switch(field)
     {
      case YEAR: calendar.add(YEAR, amount);break;
      case MONTH: calendar.add(MONTH, amount);break;
      case DAY: calendar.add(DAY, amount);break;
      case HOUR: calendar.add(HOUR, amount);break;
      case MINUTE: calendar.add(MINUTE, amount);break;
      case SECOND: calendar.add(SECOND, amount);break;
     }
    }
   


    public static void main(String[] args)
    {
//       String s = DateUtil.getStrOfTime(100000);

        DateUtil du = new DateUtil("2008-01-01 01:00:00");
//        System.out.println(du.getDate(true));
//        System.out.println(du.getTime());
//        du.add(DateUtil.MINUTE, -3);
//       
        System.out.println(du.getDate(true));
        System.out.println(du.getMillionSecone());
        /*
        try
        {
            Thread.sleep(3000);
        }catch(Exception e){}
        du.setCalendar(Calendar.getInstance());
        System.out.println(du.getTime());
        Calendar calendar = Calendar.getInstance();
        calendar.setFirstDayOfWeek(2);
        System.out.println(calendar.getFirstDayOfWeek());
       
        du.add(du.HOUR, 2);
        System.out.println(du.getYear());
        System.out.println(du.getMonth());
        System.out.println(du.getDay());
        System.out.println(du.getWeek());
        System.out.println(du.getWeekForChinese());
        System.out.println(du.getWeekForEnglishShort());
        System.out.println(du.getWeekForEnglishLong());
        System.out.println(du.getMonthForEnglishLong());
        System.out.println(du.getMonthForEnglishShort());
        */
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值