`

Java日期函数处理Util类

    博客分类:
  • Java
阅读更多
package main;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateUtils
{
    /**
     * Number of milliseconds in a standard second.
     */
    public static final long MILLIS_PER_SECOND = 1000;// 一秒钟的毫秒数
    
    /**
     * Number of milliseconds in a standard minute.
     */
    public static final long MILLIS_PER_MINUTE = 60 * MILLIS_PER_SECOND;// 一分钟的毫秒数

    /**
     * Number of milliseconds in a standard hour.
     */
    public static final long MILLIS_PER_HOUR = 60 * MILLIS_PER_MINUTE;// 一小时的毫秒数

    /**
     * Number of milliseconds in a standard day.
     */
    public static final long MILLIS_PER_DAY = 24 * MILLIS_PER_HOUR;// 一天的毫秒数
    
    /**
     * ISO8601 date format: yyyy-MM-dd
     */
    public static final String DATE_FORMAT_PATTERN = "yyyy-MM-dd";

    /**
     * ISO8601 date-time format: yyyy-MM-dd HH:mm:ss
     */
    public static String DATETIME_FORMAT_PATTERN = "yyyy-MM-dd HH:mm:ss";
    
    private DateUtils()
    {
        
    }
    
    public static String fillZero(String str, int fillSize)
    {
        if (null != str)
        {
            int beforeSize = str.length();
            if(str.length() < fillSize)
            {
                int afterSize = fillSize-beforeSize;
                for(int i=0; i<afterSize; i++)
                {
                    str = "0"+str;
                }
            }
        }
        
        return str;
    }

    /**
     * 获得系统时间yyyy-MM-dd HH:mm:ss格式
     * 
     * @return
     */
    public static String getSystime() {
        Calendar todaysDate = new GregorianCalendar();
        int year = todaysDate.get(Calendar.YEAR);
        int month = todaysDate.get(Calendar.MONTH) + 1;
        int day = todaysDate.get(Calendar.DAY_OF_MONTH);
        int hourOfDay = todaysDate.get(Calendar.HOUR_OF_DAY);//24小时制
        // int hour = todaysDate.get(Calendar.HOUR); //12小时制
        int minute = todaysDate.get(Calendar.MINUTE);
        int second = todaysDate.get(Calendar.SECOND);
        
        return year + "/" + month + "/" + day + " " + hourOfDay + ":" + fillZero(minute+"", 2)
                + ":" + fillZero(second+"", 2);
    }
    /**
     * 获得当前时间yyyy-MM-dd HH:mm:ss格式
     * @return
     */
    public static String getCurrentDateAsString()
    {
        SimpleDateFormat formatter = new SimpleDateFormat(DATETIME_FORMAT_PATTERN);

        return formatter.format(new Date());
    }
    /**
     * 获得当前日期yyyy-MM-dd HH:mm:ss格式
     * @return
     */
    public static Date getCurrentDate()
    {
        return parseToDate(getCurrentDateAsString(), DATETIME_FORMAT_PATTERN);
    }
    
    /**
     * 将日期字符串转换为指定的日期格式
     * 
     * @param str 日期字符串
     * @param pattern 日期格式
     * @return
     */
    public static Date parseToDate(String str, String pattern)
    {
        DateFormat parser = new SimpleDateFormat(pattern);
        try
        {
            return parser.parse(str);
        }
        catch (ParseException e)
        {
            throw new IllegalArgumentException("Can't parse " + str + " using " + pattern);
        }
    }
    /**
     * 将yyyy-MM-dd HH:mm:ss格式字符串转成Date
     * @param str
     * @return
     */
    public static Date parseToDate(String str)
    {
        return parseToDate(str, DATETIME_FORMAT_PATTERN);
    }
    
    /**
     * 比较两个时间数相差多少分钟
     * @param begin
     * @param end
     * @return
     */
    public static long getDiff(Date begin, Date end)
    {
        long diff = end.getTime() - begin.getTime();
        diff = Math.abs(diff);
        
        long day = diff / MILLIS_PER_DAY;// 计算差多少天
        long hour = diff % MILLIS_PER_DAY / MILLIS_PER_HOUR;// 计算差多少小时
        long min = diff % MILLIS_PER_DAY % MILLIS_PER_HOUR / MILLIS_PER_MINUTE;// 计算差多少分钟
        long sec = diff % MILLIS_PER_DAY % MILLIS_PER_HOUR % MILLIS_PER_MINUTE / MILLIS_PER_SECOND;// 计算差多少秒
        
        System.out.println("时间相差:" + day + "天" + hour + "小时" + min + "分钟" + sec + "秒。");
        
        return min;
    }
    
    /**
     * 获得指定日期的前一天
     * 
     * @param specifiedDay yy-MM-dd
     * @return
     * @throws Exception
     */
    public static String getBeforeDay(String specifiedDay)
    {
        Calendar c = Calendar.getInstance();
        Date date = null;
        try
        {
            date = new SimpleDateFormat(DATE_FORMAT_PATTERN).parse(specifiedDay);
        }
        catch (ParseException e)
        {
            e.printStackTrace();
        }
        c.setTime(date);
        int day = c.get(Calendar.DATE);
        c.set(Calendar.DATE, day - 1);

        String dayBefore = new SimpleDateFormat(DATE_FORMAT_PATTERN).format(c.getTime());
        return dayBefore;
    }

    /**
     * 获得指定日期的后一天
     * 
     * @param specifiedDay yy-MM-dd
     * @return
     */
    public static String getAfterDay(String specifiedDay)
    {
        Calendar c = Calendar.getInstance();
        Date date = null;
        try
        {
            date = new SimpleDateFormat(DATE_FORMAT_PATTERN).parse(specifiedDay);
        }
        catch (ParseException e)
        {
            e.printStackTrace();
        }
        c.setTime(date);
        int day = c.get(Calendar.DATE);
        c.set(Calendar.DATE, day + 1);

        String dayAfter = new SimpleDateFormat(DATE_FORMAT_PATTERN).format(c.getTime());
        return dayAfter;
    }

    /** 
     * 获得一个月的最后一天
     * @param date null|当天
     * @return Date
     */  
    public static Date getLastDayOfMonth(Date date) {  
        // 获取Calendar
        Calendar calendar = Calendar.getInstance();
        // 设置时间,当前时间不用设置(NULL当天)
        if(date != null)
            calendar.setTime(date);
  
        calendar.set(Calendar.DATE, calendar.getMaximum(Calendar.DATE));
        
        DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
        System.out.println(format.format(calendar.getTime()));
        
        return calendar.getTime();  
    }     

    /**  
     * 计算两个日期之间相差的天数  
     * @param d1 较小的时间 
     * @param d2  较大的时间 
     * @return 相差天数 
     * @throws ParseException  
     */    
    public static int daysBetween(Date d1, Date d2) throws ParseException
    {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        d1 = sdf.parse(sdf.format(d1));
        d2 = sdf.parse(sdf.format(d2));
        
        Calendar cal = Calendar.getInstance();
        cal.setTime(d1);
        long time1 = cal.getTimeInMillis();
        cal.setTime(d2);
        long time2 = cal.getTimeInMillis();
        long betweenDays = (time2 - time1) / (1000 * 3600 * 24);
        return Integer.parseInt(String.valueOf(betweenDays));
    }
    /**
     * 获得两个时间之间隔的天数
     * 
     * @return
     */
    public static int daysBetween(String d1, String d2) throws ParseException
    {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar cal = Calendar.getInstance();
        cal.setTime(sdf.parse(d1));
        long time1 = cal.getTimeInMillis();
        cal.setTime(sdf.parse(d2));
        long time2 = cal.getTimeInMillis();
        long betweenDays = (time2 - time1) / (1000 * 3600 * 24);
        
        return Integer.parseInt(String.valueOf(betweenDays));
    }
    /**
     * 计算两个日期之间相差的月数
     * 
     * @param date1
     * @param date2
     * @return
     */
    public static int getMonth(Date date1, Date date2) {
        int iMonth = 0;
        int flag = 0;
        try {
            Calendar cal1 = Calendar.getInstance();
            cal1.setTime(date1);

            Calendar cal2 = Calendar.getInstance();
            cal2.setTime(date2);

            if (cal2.equals(cal1)) return 0;
            if (cal1.after(cal2)) {
                Calendar temp = cal1;
                cal1 = cal2;
                cal2 = temp;
            }
            if (cal2.get(Calendar.DAY_OF_MONTH) < cal1.get(Calendar.DAY_OF_MONTH)) flag = 1;

            if (cal2.get(Calendar.YEAR) > cal1.get(Calendar.YEAR))
                iMonth = ((cal2.get(Calendar.YEAR) - cal1.get(Calendar.YEAR)) * 12 + cal2.get(Calendar.MONTH) - flag)
                         - cal1.get(Calendar.MONTH);
            else iMonth = cal2.get(Calendar.MONTH) - cal1.get(Calendar.MONTH) - flag;

        } catch (Exception e) {
            e.printStackTrace();
        }
        return iMonth;
    }
}
 

 

分享到:
评论

相关推荐

    java日期类函数方法整理

    根据给定的文件信息,以下是对Java日期类函数方法的详细整理与解释: ### Java日期类函数方法概览 在Java中,处理日期和时间主要依赖于`java.util.Date`、`java.text.SimpleDateFormat`、`java.sql.Date`、`java....

    java日期时间操作函数代码

    在Java编程语言中,日期和时间的处理是常见的任务,涉及到很多实用的函数。本篇文章将深入探讨如何在Java中进行日期时间的操作,主要基于标题和描述中提及的知识点。 首先,Java提供了一个内置的`java.util.Date`类...

    Java常用工具类UtilClass

    在Java编程中,工具类(Util Class)是包含各种实用函数的静态类,它们提供了一种简化常见任务的方法。在给定的`UtilClass`中,我们有五个主要的工具类:`StringUtil`、`FileUtil`、`ConnectDB`、`DateUtil`和`...

    Java常用Util类

    在Java中,Util类通常包含了各种通用功能,如集合操作、日期时间处理、字符串处理等。以下是一些Java中常用的Util类及其重要知识点的详细说明: 1. **ArrayList和LinkedList**: 这两个都是`java.util`包下的List...

    Java常用函数大全

    在Java中,我们可以使用`java.util.Date`、`java.time.LocalDate`或`java.time.LocalDateTime`等类来处理日期。可能的方法有获取当前日期、日期比较、日期格式化(如`SimpleDateFormat`或`DateTimeFormatter`)等。 ...

    java常用util类

    在Java编程语言中,`util`包是Java标准库中的一个核心部分,包含了大量实用工具类,极大地丰富了开发者的代码库。这个包下有很多重要的类,如ArrayList、HashMap、LinkedList、Date、Calendar等,它们提供了许多常用...

    java日期格式函数的用法与实例

    本文将深入探讨`java.util.Date`类以及与其相关的日期格式化函数的使用方法,并通过实例进行详细解析。 首先,我们了解`java.util.Date`是Java中的一个核心类,它用于表示特定的瞬间,精确到毫秒。获取系统当前时间...

    java日期和查询数据库生成XML文件类

    综上所述,"java日期和查询数据库生成XML文件类"涉及到的开发工作主要包括处理日期和时间、数据库操作以及XML的生成。理解并熟练掌握这些概念和API对于开发涉及数据交换和持久化的Java应用至关重要。通过调整和定制...

    java.util.Date到Json日期

    1. **构造函数**:`DateJsonValueProcessor`类有两个构造函数,一个无参,另一个接受日期格式字符串作为参数。 ```java public DateJsonValueProcessor() {} public DateJsonValueProcessor(String format) { ...

    Java获取各种日期的函数(方法).docx

    Java日期操作函数详解 ...Java日期操作函数可以帮助开发者快速获取和处理日期相关的信息,提高开发效率和质量。本文讨论的函数只是Java日期操作函数的一部分,开发者需要根据实际情况选择合适的函数来实现日期操作。

    java util 类

    `Date`和`Calendar`是处理日期和时间的类,但在Java 8之后,`java.time`包的`LocalDate`、`LocalTime`、`LocalDateTime`等类更推荐使用,它们提供了更加直观和灵活的时间操作。 `Random`类用于生成随机数,可以生成...

    java_util 工具包

    `java.util`包作为Java标准库中的一个重要组成部分,提供了大量的实用工具类和接口,旨在简化开发者在处理数据结构、日期时间、事件处理等方面的工作。这个包包含了如日期类(Date)、日历类(Calendar)、随机数生成器...

    java日常处理函数

    Java 8之前,主要使用`java.util.Date`, `java.util.Calendar`以及`SimpleDateFormat`类来处理日期。然而,这些API被普遍认为设计复杂且易出错。从Java 8开始,引入了新的日期时间API,`java.time`包,包括以下核心...

    java日期处理

    以上就是基于给定文件信息整理出的Java日期处理相关知识点,包括如何获取当前时间、不同格式的时间转换以及在JavaScript中获取当前时间等。这些知识点是Java编程中处理日期时间的基础,对于从事软件开发的人来说非常...

    Java 8函数式编程.rar

    6. **日期与时间API**:Java 8对日期和时间API进行了重构,提供了`java.time`包,包含`LocalDate`, `LocalTime`, `LocalDateTime`等类,比旧的`java.util.Date`和`Calendar`更易于使用。 7. **并行流**:Stream API...

    java操作日期时间工具类

    Java提供了多种工具类来帮助开发者进行日期时间的操作,其中最常用的是`java.util.Date`、`java.util.Calendar`以及`java.time`包中的类。本篇将重点介绍Java操作日期时间的工具类,特别是通过`DateUtil.java`这个...

    java中的日期处理类总结.pdf

    在Java中,处理日期的类主要分为以下几个部分:java.util.Date类、java.util.Calendar类、java.util.GregorianCalendar类、java.text.DateFormat类和java.text.SimpleDateFormat类。 首先,java.util.Date类是Java...

    java-util大全.rar

    Java Util大全是一个集合了多种实用工具类的压缩包,涵盖了Java开发中常见的各种操作,如加密解密、日期时间处理、HTTP请求、JSON解析、文件服务器整合等。这些工具类在实际开发中起到了非常关键的作用,能提高代码...

    Java函数包 API

    此外,Java 5.0的API还包括了对并发编程的改进,如`java.util.concurrent`包中的线程池、同步器(如CyclicBarrier和Semaphore)等工具,以及新的日期时间API(java.util.Calendar和java.util.Date的替代者,如java....

    java.util.Date与java.sql.Date相互转换

    Java标准库提供了两个重要的日期类:`java.util.Date` 和 `java.sql.Date`。虽然它们名字相似,但在实际应用中有着不同的用途和特性。`java.util.Date` 主要用于表示具体的瞬间,而 `java.sql.Date` 专门用于SQL语句...

Global site tag (gtag.js) - Google Analytics