`
baobeituping
  • 浏览: 1068532 次
  • 性别: 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`类通常被设计为一个工具类,用于提供方便、高效和灵活的日期处理功能。这个类集成了多种方法,帮助开发者进行日期格式化、获取当前时间等操作。下面我们将深入探讨`DateUtil`类可能包含的一些核心知识点。...

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

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

    Android-Java中的日期转化格式DateUtil工具类

    `DateUtil`工具类通常包含了对日期进行格式化、解析、比较等常用功能,使得在Android项目中处理日期变得更加便捷。 在Java中,日期对象主要由`java.util.Date`类表示,而日期格式化则依赖于`java.text....

    Android开发中日期工具类DateUtil完整实例

    Android开发中日期工具类DateUtil是Android开发中一个非常重要的工具类,它提供了许多有用的方法来处理日期和时间相关的操作。今天,我们将详细介绍DateUtil工具类的实现和使用。 日期工具类的重要性 在Android...

    Java DateUtil时间工具类

    然而,随着Java 8的发布,`java.time`包提供了更直观、易用的日期时间API,如`LocalDate`, `LocalTime`, `LocalDateTime`等,这些新API的出现使得开发者在处理日期和时间时有了更好的选择。尽管如此,对于旧项目或者...

    DateUtil(日期工具类)

    在Java编程语言中,`DateUtil`通常是一个自定义的工具类,用于处理与日期和时间相关的操作。这个工具类可以极大地简化日期处理任务,提供比Java内置的`java.util.Date`和`java.time`包更友好的API。在本文中,我们将...

    DateUtil(通用日期工具类)

    在Java编程中,DateUtil是一个常见的工具类,用于处理日期和时间相关的操作。这个类通常包含了一系列静态方法,便于开发者进行日期格式化、日期比较、日期计算等常见任务。下面我们将详细探讨DateUtil中的关键知识点...

    dateUtil工具类

    总之,DateUtil工具类是一个集成了日期时间处理各种常见操作的实用工具,简化了开发者对日期时间的管理,提高了代码的可读性和可维护性。在实际项目中,使用这样的工具类可以大大提高开发效率,同时避免了重复造轮子...

    DateUtil通用类

    `DateUtil`可能会提供一个方法,允许用户自定义日期时间格式,例如`format(Date, DateTimeFormatter)`,其中`DateTimeFormatter`是Java 8引入的类,用于创建和解析复杂的日期时间格式。 6. **日期时间的转换**: ...

    DateUtil java日期工具类

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

    时间日期工具类(包含java8新特性).zip

    在SpringBoot项目中,这些工具类可以作为全局的日期时间处理工具,使得代码更加简洁、易读。 总的来说,这个压缩包中的两个文件是针对日期时间处理的实用工具,结合了Java 8的新特性,旨在提高开发者在SpringBoot...

    java DateUtil工具类时间戳类型转换详解

    Java DateUtil 工具类是 Java 开发中经常使用的一种日期处理工具类,它提供了多种日期处理方法,包括时间戳类型转换、日期格式化、日期解析等。下面我们将详细介绍 Java DateUtil 工具类的时间戳类型转换相关知识点...

    日期处理工具类

    在Java编程语言中,日期处理是一项常见的任务,用于管理和操作日期和时间。为了方便开发者,Java提供了多种工具类来处理日期。"日期处理工具类"通常是指一个自定义的类,它封装了一些常用的方法,例如日期格式化、...

    java操作日期时间工具类

    本篇将重点介绍Java操作日期时间的工具类,特别是通过`DateUtil.java`这个自定义工具类的实现方式。 `java.util.Date`是Java早期用来表示日期和时间的基础类,它包含了日期和时间的信息,但没有区分日期和时间。...

    DateUtil.java

    在Java编程语言中,日期和时间的处理是常见的任务,特别是在日常开发中。`DateUtil.java` 和 `DateFormat.java` 文件可能包含了解决这一问题的关键工具。`DateUtil` 类通常是一个自定义的工具类,封装了对Java内置`...

    Java中对日期的常用处理(转)

    总结起来,Java中对日期的处理涵盖了多种场景,从基本的日期对象创建、格式化、比较,到复杂的日期时间计算和时区处理。`DateUtil.java`可能封装了这些常见操作,方便在项目中复用。了解并熟练掌握这些知识点,对于...

    最全的java时间(日期)工具类

    总结来说,Java中的日期时间处理涉及`java.util.Date`、`SimpleDateFormat`和`java.time`包中的类。对于复杂的日期时间操作,推荐使用Java 8的`java.time`API,它提供了更为直观和强大的功能。同时,创建一个统一的`...

    python dateutil模块 64位

    `dateutil.relativedelta`类允许你处理日期和时间的相对间隔。例如,增加一个月、减少一年等: ```python from dateutil.relativedelta import relativedelta now = datetime.now() future_date = now + ...

    DateUtil.zip

    在Java编程中,日期和时间处理是至关重要的部分,尤其在开发业务逻辑或者数据分析应用时。`DateUtil.zip`文件包含了一个名为`DateUtil.java`的类,该类提供了多种处理日期和时间的方法,便于开发者在项目中进行时间...

Global site tag (gtag.js) - Google Analytics