`
baobeituping
  • 浏览: 1045817 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

日期时间处理类(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());
        */
    }
}

分享到:
评论

相关推荐

    日期处理工具DateUtil

    所有关于日期处理的方法,日期格式化,得到当前时间。

    DateUtil.java 时间日期处理工具类

    包含"yyyy-MM-dd"、"yyyy-MM-dd HH:mm:ss"、"yyyyMMdd"、"yyyyMMddHHmmss"、"yyyy-MM"、"yyyyMM"等时间格式的转换。 其中: 1.String转Timestamp stringToTimestamp(String dateStr); 2.比较传入时间与当前时间前一...

    DateUtil java日期工具类

    个人整理的java的关于Date对象的日期时间处理工具类,若存在问题还望大家在评论中提出,我将一直进行修改维护

    Java日期处理工具类

    基本涵盖了各种场景的日期处理需要,包括时间类型转换,获取N天前后,月初月末,某段时间按天拆分等功能,欢迎使用。

    java时间处理工具类--DateUtils

    * @(#)DateUtil.java * * * @author kidd * @version 1.00 2007/8/8 */ import java.util.*; import java.text.*; import java.sql.Timestamp; public class DateUtils { /** * 时间范围:年 */ ...

    python日期操作各种模块详尽讲解和示例源代码

    在Python中,日期和时间处理是开发中常见的任务之一。标准库中的`datetime`模块提供了日期和时间操作的基本功能,包括创建日期时间对象、日期时间比较、格式化...Python的日期时间处理工具丰富多样,功能强大,简单高效

    DateUtil.java

    Java处理日期工具类。获取本月日期天数,某天在全年的第几天,获取星期,获取一个时间范围的日期列表等等。

    java操作 工具类1.0

    工具类 DateUtil(日期处理) CalendarUtil(时间处理) PinyinUtils(汉字转拼音) PropertiesFileUitl(键值对文件存取)等,继续更新

    JAVA时间处理类

    * 将某个日期格式字符串转换成另一指定格式日期字符串 例:传入"2009/1/15 16:58:00","yyyy/MM/dd * hh:mm:ss","yyyy年M月d日 a h时m分s秒" 则返回 “2009年1月15日 下午 4时58分0秒” * * @param dateStr ...

    feilong开发工具库.rar

    愿景: Reduce development,Release ideas (减少开发,释放思想), 希望可以减少书写重复且繁杂的代码,让你从大量重复的底层代码中脱身,提高工作效率...有常用专属工具类 (如处理日期的 DateUtil,处理集合的Collectio

    python自动提取文本中的时间(包含中文日期)

    有时在处理不规则数据时需要提取文本包含的时间日期。 dateutil.parser模块可以统一日期字符串格式。 datefinder模块可以在字符串中提取日期。 datefinder模块实现也是用正则,功能很全 但是对中文不友好。 但是...

    arrow:更好的 Python 日期时间操作类库-python

    Python 的标准库和其他一些低级模块具有近乎完整的日期、时间和时区功能,但从可用性角度来看效果不佳:模块太多:日期时间、时间、日历、dateutil、pytz 等等类型:日期、时间、日期时间、tzinfo、timedelta、...

    自己收集整理的一些常用的工具类

    DateUtil 日期操作工具类 DbHelper 数据库帮助类 DensityUtil 屏幕信息获取数值的转换 DeviceStatusUtils 手机状态工具类 主要包括网络、蓝牙、屏幕亮度、飞行模式、音量等 DigestUtils DigestUtils FileUtils 文件...

    邮件发送 poi 二维码 条形码等java常用的工具类

    DateUtil:时间处理工具类 DBConnection:jdbc工具类 FileOperater:文件处理工具类 包括 读取文本文件,写出文本文件, 大文件切分,文件下载,文件或文件夹比较,文件或文件夹遍历筛选 ...... HttpClientCard...

    python 常用日期处理– datetime 模块的使用

    仅以此篇记录一下个人常用的 Python 处理日期的库与函数,主要涉及的类库有 Python 自带的 datetime, time 和 calendar,以及第三方的 dateutil。说到日期处理基本上要覆盖的概念有 date, time, datetime, timezone,...

    angularjs日期格式化及获得特定时间范围的公共service组件

    angularjs service组件,可以通过注入的方式在某...例如获得当前月的第一天的日期,这里以yyyy-mm-dd格式返回。当然format函数也可以进行函数也可以进行格式设置。 dateService.format(dateUtil.getMonthStartDate());

    TimeUtil.java

    TimeUtil.java--处理有关时间的工具类,包括格式化时间([yyyyMMddHHmmss]转换成[yyyy-MM-dd HH:mm:ss]),格式化时间([yyyy-MM-dd]转换成[yyyy年MM月dd日]),格式化时间(由源格式的时间改为目的格式的时间),格式...

    python 计算两个日期相差多少个月实例代码

    我在网上找了很久,结果发现万能的python,居然没有一个模块计算两个日期的月数,像Java、C#之类的高级语言,都会有(date1-date2).months的现成方法,觉得不可思议。说句实在的,一直觉得python 的日期处理模块真心...

    feilong开发工具库-其他

    1、有常用的工具类 (如处理日期的DateUtil,处理集合的CollectionsUtil等) 2、有常用的JAVA常量类 (如日期格式DatePattern,时间间隔TimeInterval等) 3、不必要的Exception 转成了RuntimeException,减少不必要的...

Global site tag (gtag.js) - Google Analytics