java时间格式转换

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、获取当前时间
  • 二、 获取当前时间戳
  • 三、 日期转时间戳
  • 四、 时间戳转日期
  • 五、 日期转字符串
  • 六、 字符串转日期
  • 七、 CST格式转日期
  • 八、 非标准格式转日期
  • 九、 日期字符串格式转换
  • 十、 日期转日历
  • 十一、 日历转日期
  • 十二、日期计算
  • 十三、计算日期间隔的方法
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

本文整理一下常用的时间格式转换、计算等方便,共自己及大家共同使用。


提示:以下是本篇文章正文内容,下面案例可供参考

一、获取当前时间

Date date = new Date(); 

二、 获取当前时间戳

long timestamp = System.currentTimeMillis();

三、 日期转时间戳

Date date = new Date();
String timestamp = String.valueOf(date.getTime());
System.out.println(timestamp);

四、 时间戳转日期

String timestamp = "1521480110000";
Date date = new Date(new Long(timestamp));
System.out.println(date);

五、 日期转字符串

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
String dateStr = sdf.format(date);
System.out.println(dateStr);

六、 字符串转日期

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = "2018-05-16 19:30:20";
Date date = sdf.parse(dateStr);
System.out.println(date);

七、 CST格式转日期

SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", java.util.Locale.US); // 注意使用Locale.US参数
String cst = "Tue May 16 19:30:20 CST 2018";
Date date = sdf.parse(cst);
System.out.println(date);

八、 非标准格式转日期

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        sdf.setLenient(false); // 设置严格验证日期
String dateStr = "20180516";
Date date = sdf.parse(dateStr);
System.out.println(date);

九、 日期字符串格式转换

SimpleDateFormat sdfSource = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat sdfTarget = new SimpleDateFormat("yyyy-MM-dd");
String dateSource = "20180516";
String dateTarget = sdfTarget.format(sdfSource.parse(dateSource));
System.out.println(dateTarget);

十、 日期转日历

Date date = new Date();
Calendar c = Calendar.getInstance();
c.setTime(date);
System.out.println(c);

十一、 日历转日期

Calendar c = Calendar.getInstance();
Date date = c.getTime();
System.out.println(date);

十二、日期计算

public class TestDateCalculateUtil {
    public static void main(String[] args) throws ParseException {
        // 日期计算.例子:2018-05-16 19:30:20
        DateUtils.setYears(new Date(), 2019); // 根据参数设置日期年份.输出:2019-05-16 19:30:20
        DateUtils.addMonths(new Date(), -1); // 根据参数增加日期月份.输出:2019-04-16 19:30:20
        DateUtils.truncate(new Date(), Calendar.DATE); // 根据参数截取日期.输出:2019-04-16 00:00:00
        DateUtils.ceiling(new Date(), Calendar.DATE);  // 根据参数向上进位日期.输出:2018-05-17 00:00:00
        DateUtils.getFragmentInDays(new Date(), Calendar.MONTH); // 根据参数截取范围内日期后返回天数.输出:16
        DateUtils.truncatedEquals(new Date(), new Date(), Calendar.DATE); //根据参数范围比较日期是否相同,该例子只比较年月日.输出:true
        DateUtils.truncatedCompareTo(new Date(), new Date(), Calendar.MONTH); //根据参数范围比较日期大小,该例子只比较年月.输出:0

        // 举例
        getFirstSecondOfMonth(); // 获取当月第一秒
        getLastSecondOfMonth(); // 获取当月最后一秒
        getDayOfYear(); // 获取日期是该年的第几天
        getFirstSundayOfMonth(); // 获取当月的第一个周日
    }

    public static void getFirstSecondOfMonth() {
        Date date = new Date();
        date = DateUtils.truncate(date, Calendar.MONTH); // 截取日期到月份
        System.out.println(date); // 输出:2018-05-01 00:00:00
    }

    public static void getLastSecondOfMonth() {
        Date date = new Date();
        date = DateUtils.ceiling(date, Calendar.MONTH); // 向上进位月份
        date = DateUtils.addSeconds(date, -1); // 减1秒
        System.out.println(date); // 输出:2018-05-31 23:59:59
    }

    public static void getDayOfYear() {
        Date date = new Date();
        long day = DateUtils.getFragmentInDays(date, Calendar.YEAR); // 截取年之后的日期部分,并按天数返回
        System.out.println(day); // 输出:136
    }

    public static void getFirstSundayOfMonth() {
        Date date = new Date();
        date = DateUtils.setDays(date, 1); // 从该月第一天开始
        while (true) {
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            if (c.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { // 比较该天是否为周日
                System.out.println(date); // 输出:2018-05-06 19:30:20
                break;
            } else {
                date = DateUtils.addDays(date, 1);
            }
        }
    }
}

十三、计算日期间隔的方法

public static void main(String[] args) {
        // 两个日期之间实际的间隔,并按规定格式返回,如:2018.8.31与2018.9.4 相差5天
        String period = DurationFormatUtils.formatPeriod(DateUtils.addDays(new Date(), -5).getTime(), new Date().getTime(), "y-M-d");
        System.out.println(period); // 相差5天,输出:0-0-5

        // 计算两个月之间的间隔,跨月即算间隔1个月,如:2018.8.31与2018.9.4 相差1个月
        int periodOfMonth = getPeriodOfMonth(DateUtils.addDays(new Date(), -5), new Date());
        System.out.println(periodOfMonth); // 相差1个月,输出:1
    }

    public static int getPeriodOfMonth(Date dateBegin, Date dateEnd) {
        Date begin = DateUtils.truncate(dateBegin, Calendar.MONTH);
        Date end = DateUtils.truncate(dateEnd, Calendar.MONTH);
        String period = DurationFormatUtils.formatPeriod(begin.getTime(), end.getTime(), "M");
        return Integer.parseInt(period);
    }

总结

摘抄一些常用的方法,以便自己使用

你可能感兴趣的:(原创,java,jvm,开发语言)