java时间格式转换

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


前言

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

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


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

一、获取当前时间

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);
    }

总结

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

  • 17
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用Java中的SimpleDateFormat类来进行日期格式转换。下面是一个示例代码,将日期集合中的日期格式从一种格式转换为另一种格式: ```java import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; public class DateConversionExample { public static void main(String[] args) { // 原始日期格式 SimpleDateFormat originalFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 目标日期格式 SimpleDateFormat targetFormat = new SimpleDateFormat("dd/MM/yyyy"); // 原始日期集合 List<String> originalDates = new ArrayList<>(); originalDates.add("2022-01-01 10:30:00"); originalDates.add("2022-02-15 15:45:00"); originalDates.add("2022-03-20 08:00:00"); // 转换后的日期集合 List<String> convertedDates = new ArrayList<>(); for (String originalDate : originalDates) { try { // 解析原始日期字符串为Date对象 Date date = originalFormat.parse(originalDate); // 格式化Date对象为目标日期格式的字符串 String convertedDate = targetFormat.format(date); convertedDates.add(convertedDate); } catch (ParseException e) { e.printStackTrace(); } } // 打印转换后的日期集合 for (String convertedDate : convertedDates) { System.out.println(convertedDate); } } } ``` 上述代码中,我们使用SimpleDateFormat类来定义原始日期格式和目标日期格式。然后,我们遍历原始日期集合,将每个日期字符串解析为Date对象,然后再将其格式化为目标日期格式的字符串。最后,我们打印转换后的日期集合。 请根据你的具体需求修改代码中的日期格式和日期集合。希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值