Java日期操作工具类

在做JavaWeb开发时经常要做的一件事就是要将浏览器中的日期值保存到数据库中,但是这就需要一个统一的日期存储格式才行。在此分享一下总结得到的经常使用的一些日期操作的工具方法。

package com.teemo.utils;

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

/**
 * 日期、时间常用操作的工具类
 * 
 * @author Timeng.Hero
 * 
 */
public class DateUtils {

    /**
     * 取得YYYYmmdd形式表示的8位当前日期
     * 
     * @return
     */
    public static String get8Date() {
        Calendar calendar = Calendar.getInstance();
        return String.format("%1$4tY%1$2tm%1$td", calendar);
    }

    /**
     * 取得YYYYmmddHHMMSS形式表示的14位当前日期
     * 
     * @return
     */
    public static String get14Date() {
        Calendar calendar = Calendar.getInstance();
        return String.format("%1$4tY%1$2tm%1$td%1$2TH%1$2TM%1$2TS", calendar);
    }

    /**
     * 取得YYYYmmdd形式表示的8位日期
     * 
     * @param date
     *            日期
     * @return YYYYmmdd形式表示的日期
     */
    public static String get8Date(Calendar date) {
        return String.format("%1$4tY%1$2tm%1$td", date);
    }

    /**
     * 取得YYYYmmddHHMMSS形式表示的14位当前日期
     * 
     * @param date
     *            日期
     * @return YYYYmmddHHMMSS形式表示的日期
     */
    public static String get14Date(Calendar date) {
        return String.format("%1$4tY%1$2tm%1$td%1$2TH%1$2TM%1$2TS", date);
    }

    /**
     * 取得日期转换成的Calendar对象
     * 
     * @param date
     *            8位或14位的日期
     * @return Calendar对象
     * @throws Exception
     *             当转换出错时产生错误
     */
    public static Calendar getCalFromDate(String date) throws Exception {
        Calendar calendar = Calendar.getInstance();
        int year = 0;
        int month = 0;
        int date_of_month = 0;
        int hourOfDay = 0;
        int minute = 0;
        int second = 0;
        try {
            if (date.length() >= 8) {
                year = Integer.valueOf(date.substring(0, 4));
                month = Integer.valueOf(date.substring(4, 6)) - 1;
                date_of_month = Integer.valueOf(date.substring(6, 8));
            }
            if (date.length() >= 14) {
                hourOfDay = Integer.valueOf(date.substring(8, 10));
                minute = Integer.valueOf(date.substring(10, 12));
                second = Integer.valueOf(date.substring(12, 14));
            }
        } catch (NumberFormatException e) {
            throw e;
        }
        calendar.set(year, month, date_of_month, hourOfDay, minute, second);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar;
    }

    /**
     * 通过传入格式为yyyyMMddhhmmss的字符串参数,将其转换成YYYY-mm-dd HH:MM:SS 格式的时间字符串 *
     * 
     * @return
     * @throws ParseException 
     */
    public static String get19Date(String dtime) throws ParseException {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddhhmmss");
        Calendar calendar = Calendar.getInstance();
        Date dateTime = simpleDateFormat.parse(dtime);
        calendar.setTime(dateTime);
        return String.format("%1$4tY-%1$2tm-%1$td %1$2TH:%1$2TM:%1$2TS", calendar);
    }

    /**
     * 计算两个日期值之间相差的天数(24小时算一天)
     * @param startDate 起始日(8位或14位的字符串类型的日期值)
     * @param endDate 截止日(8位或14位的字符串类型的日期值)
     * @return
     * @throws Exception
     */
    public static int getDaysBetween(String startDate, String endDate) throws Exception{
        long start = getCalFromDate(startDate).getTimeInMillis();
        long end = getCalFromDate(endDate).getTimeInMillis();
        int days = (int) ((end - start) / (1000 * 60 * 60 * 24));
        return days;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值