文档章节

日期格式化工具

ricoc
 ricoc
发布于 2017/05/05 11:49
字数 1022
阅读 9
收藏 2

日期格式化工具:

1.日期转换字符串
2.字符串转换为日期
3.获取一天开始时间
4.获取一天结束时间
5.获取一周开始时间 00:00:00
6.获取一周结束时间 23:23:59
7.获取一个月开始时间
8.获取一个月结束时间
9.根据年月输出每月最后一天
10.获取年份
11.读取月份
12.转换中文日期格式

 


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

import org.apache.commons.lang3.StringUtils;

/**
 * 日期格式化工具
 *
 * @author rico 2016年5月7日
 */
public class DateFormatUtils {

    // 时间格式化格式
    public static final String DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
    public static final String DATETIME_MINUTE_PATTERN = "yyyy-MM-dd HH:mm";
    public static final String DATE_PATTERN = "yyyy-MM-dd";
    public static final String DATE_MONTH_PATTERN = "yyyy-MM";
    public static final String DATE_YEAR_PATTERN = "yyyy";
    public static final String DATE_PATTERN_CN = "yyyy年MM月dd日";

    // 周天数
    private static final int DAYS_OF_WEEK = 7;

    /**
     * 日期转换字符串
     *
     * @param date    日期
     * @param pattern 时间格式
     * @return
     */
    public static String toString(Date date, String pattern) {
        if (date == null) {
            throw new IllegalArgumentException("The date must not be null");
        }

        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        return sdf.format(date);
    }

    /**
     * 字符串转换为日期
     *
     * @param date    字符串格式日期
     * @param pattern 转换类型
     * @return
     */
    public static Date toDate(String date, String pattern) throws ParseException {
        if (StringUtils.isBlank(date)) {
            throw new IllegalArgumentException("The date must not be null");
        }

        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        return sdf.parse(date);
    }

    /**
     * 获取一天开始时间
     *
     * @param date
     * @return
     */
    public static Date getFirstOfDateTime(Date date) {
        return DateFormatUtils.convertDateToStartOrEnd(date, true);
    }

    /**
     * 获取一天结束时间
     *
     * @param date
     * @return
     */
    public static Date getLastOfDateTime(Date date) {
        return DateFormatUtils.convertDateToStartOrEnd(date, false);
    }

    /**
     * 时间格式化,获取一天开始、结束时间
     *
     * @param date
     * @param isBegin
     * @return
     */
    private static Date convertDateToStartOrEnd(Date date, boolean isBegin) {
        return convertDateToStartOrEnd(null, date, isBegin);
    }

    /**
     * 时间格式化,获取一天开始、结束时间
     *
     * @param date    格式化时间
     * @param isBegin true:格式为开始时间,false:格式化为结束时间
     * @return
     */
    private static Date convertDateToStartOrEnd(Calendar cal, Date date, boolean isBegin) {
        if (cal == null) {
            cal = Calendar.getInstance();
        }
        cal.setTime(date);

        if (isBegin) {
            cal.set(Calendar.HOUR_OF_DAY, 0);
            cal.set(Calendar.MINUTE, 0);
            cal.set(Calendar.SECOND, 0);
            cal.set(Calendar.MILLISECOND, 0);
        } else {
            cal.set(Calendar.HOUR_OF_DAY, 23);
            cal.set(Calendar.MINUTE, 59);
            cal.set(Calendar.SECOND, 59);
            cal.set(Calendar.MILLISECOND, 999);
        }

        return cal.getTime();
    }

    /**
     * 获取一周开始时间 00:00:00
     *
     * @param date
     * @return
     */
    public static Date getFirstDateTimeOfWeek(Date date) {
        if (date == null) {
            throw new IllegalArgumentException("The date must not be null");
        }

        Calendar cal = Calendar.getInstance();
        convertDateToStartOrEnd(cal, date, true);

        int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
        cal.add(Calendar.DATE, 1 - dayOfWeek);

        return cal.getTime();
    }

    /**
     * 获取一周结束时间 23:23:59
     *
     * @param date
     * @return
     */
    public static Date getLastDateTimeOfWeek(Date date) {
        if (date == null) {
            throw new IllegalArgumentException("The date must not be null");
        }

        Calendar cal = Calendar.getInstance();
        convertDateToStartOrEnd(cal, date, false);

        int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
        cal.add(Calendar.DATE, DAYS_OF_WEEK - dayOfWeek);

        return cal.getTime();
    }

    /**
     * 获取一个月开始时间
     *
     * @param date
     * @return
     */
    public static Date getFirstDateTimeOfMonth(Date date) {
        if (date == null) {
            throw new IllegalArgumentException("The date must not be null");
        }

        Calendar cal = Calendar.getInstance();
        convertDateToStartOrEnd(cal, date, true);
        cal.set(Calendar.DATE, 1);

        return cal.getTime();
    }

    /**
     * 获取一个月结束时间
     *
     * @param date
     * @return
     */
    public static Date getLastDateTimeOfMonth(Date date) {
        if (date == null) {
            throw new IllegalArgumentException("The date must not be null");
        }

        Calendar cal = Calendar.getInstance();
        convertDateToStartOrEnd(cal, date, false);

        cal.set(Calendar.DATE, 1);
        cal.add(Calendar.MONTH, 1);
        cal.add(Calendar.DATE, -1);

        return cal.getTime();
    }

    /**
     * 根据年月输出每月最后一天.
     *
     * @param year  the year
     * @param month the month
     * @return the CN last date time of month
     */
    public static String getLastDateTimeOfMonth(int year, int month, String pattern) {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR, year);
        cal.set(Calendar.MONTH, month - 1);
        Date date = cal.getTime();
        return toString(getLastDateTimeOfMonth(date), pattern);
    }

    /**
     * 获取年份
     *
     * @return
     */
    public static int getCurrentYear() {
        Calendar cal = Calendar.getInstance();
        return getYearOfDate(cal);
    }

    /**
     * 获取年份
     *
     * @param date
     * @return
     */
    public static int getYearOfDate(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return getYearOfDate(cal);
    }

    /**
     * 获取年份
     *
     * @param cal
     * @return
     */
    public static int getYearOfDate(Calendar cal) {
        return cal.get(Calendar.YEAR);
    }

    /**
     * 读取月份
     * @param date
     * @return
     */
    public static int getMonthOfDate(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return getMonthOfDate(cal);
    }

    /**
     *
     * @param date
     * @return
     */
    public static int getMonthOfDate2(Date date) {
        return 1 + getMonthOfDate(date);
    }

    /**
     * 读取月份
     * @param cal
     * @return
     */
    public static int getMonthOfDate(Calendar cal) {
        return cal.get(Calendar.MONTH);
    }

    /**
     * 转换中文日期格式
     *
     * @param date
     * @return
     */
    public static String converToCnDate(Date date) {
        Map<String, String> separators = defaultDateSeparators();
        return converToCnDate(date, separators);
    }

    /**
     * 转换中文日期格式
     *
     * @param date
     * @param separators
     * @return
     */
    public static String converToCnDate(Date date, Map<String, String> separators) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);

        return converToCnDate(cal, separators);
    }

    /**
     * 转换中文日期格式
     *
     * @param cal
     * @return
     */
    public static String converToCnDate(Calendar cal) {
        Map<String, String> separators = defaultDateSeparators();
        return converToCnDate(cal, separators);
    }

    /**
     * 转换中文日期格式
     *
     * @param cal
     * @param separators
     * @return
     */
    public static String converToCnDate(Calendar cal, Map<String, String> separators) {
        // 获取年月日
        int year = cal.get(Calendar.YEAR);
        int month = cal.get(Calendar.MONTH) + 1;
        int date = cal.get(Calendar.DATE);

        String yearStr = DigitalUtil.converYearToString(year, DigitalUtil.digitToStringMap2());
        String monthStr = DigitalUtil.converDigitToString(month);
        String dateStr = DigitalUtil.converDigitToString(date);

        return yearStr.concat(separators.get("year"))
                .concat(monthStr).concat(separators.get("month"))
                .concat(dateStr).concat(separators.get("date"));
    }

    /**
     * 默认日期格式化格式
     *
     * @return
     */
    public static Map<String, String> defaultDateSeparators() {
        Map<String, String> separators = new HashMap<String, String>();

        separators.put("year", "年");
        separators.put("month", "月");
        separators.put("date", "日");

        separators.put("hour", ":");
        separators.put("minute", ":");
        separators.put("second", ":");

        return separators;
    }

}

 

© 著作权归作者所有

共有 人打赏支持
ricoc
粉丝 6
博文 29
码字总数 22542
作品 0
广州
私信 提问
Java 8时间和日期API 20例

伴随lambda表达式、streams以及一系列小优化,Java 8 推出了全新的日期时间API,在教程中我们将通过一些简单的实例来学习如何使用新API。Java处理日期、日历和时间的方式一直为社区所诟病,将...

黄梦巍
2015/06/19
0
0
Hutool之时间工具——DateUtil

时间工具类 考虑到Java本身对日期时间的支持有限,并且Date和Calendar对象的并存导致各种方法使用混乱和复杂,故使用此工具类做了封装。这其中的封装主要是日期和字符串之间的转换,以及提供...

路小磊
2014/05/24
0
2
java8中的时间处理0 - api介绍

Java 8 Date Time API是我们java开发一直寻找的时间处理工具。java从一开始设计的时间类就让人头疼,好在现在终于有了java8。 为什么我们需要这套API 只要是有这么几个理由: Java的日期和时...

davelet
2018/02/22
0
0
joda-time 时间处理工具

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kisscatforever/article/details/89240738 一、前言 说到java的时间处理,我们一般用到的有包里面的 和 类里面...

AresCarry
04/12
0
0
java实现导出excel功能的问题

今天做关于java实现导出excel功能的问题,遇到了两个问题,一个是导出的数据日期时间不是格式化的日期格式,另一个是做的导出用迅雷下载出现乱码,用IE自带下载工具下载没有问题。希望高手进...

汪正习
2011/09/21
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

Python中判断字符串是否包含中文

Python import reRE = re.compile(u'[\u4e00-\u9fa5]', re.UNICODE)match = re.search(RE, str)if match is None:# 没有包含中文字符 参考 Python regular expressions return true/f......

亚林瓜子
9分钟前
0
0
《CNCF × Alibaba 云原生技术公开课》正式首播

《CNCF × Alibaba 云原生技术公开课》立即观看:点击立即观看 云原生最初来描述云上应用的典型架构与特性,随着容器、Kubernetes、Serverless、FaaS技术的演进,CNCF(云原生计算基金会)把...

mcy0425
9分钟前
0
0
网站漏洞如何修复网站程序问题

jeecms 最近被爆出高危网站漏洞,可以导致网站被上传webshell木马文件,受影响的版本是jeecms V6.0版本到jeecmsV7.0版本。该网站系统采用的是JAVA语言开发,数据库使用的是oracle,mysql,sql数...

网站安全
12分钟前
0
0
git 中“warning: CRLF will be replaced by LF in”解决方案

https://stackoverflow.com/questions/5834014/lf-will-be-replaced-by-crlf-in-git-what-is-that-and-is-it-important...

qwfys
17分钟前
0
0
Spring Boot配置ssl证书启用HTTPS协议

一 、点睛 SSL是为网络通信提供安全及数据完整性的一种安全协议,SSL在网络传输层对网络连接进行加密。SSL协议位于TCP/IP协议和各种应用层协议之间,为数据通信提供安全支持。 SSL协议分为两...

故久呵呵
19分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部