首页 > 编程知识 正文

年终总结要写日期吗,datedif函数的使用方法及实例

时间:2023-05-04 09:25:46 阅读:24122 作者:1266

概述

日期工具类,封装一些日期相关的方法。
(未完待续。。。)

代码 package com.wzh.utils;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;/** * 日期工具类 * * @author weizhenhui * @date 2020/9/24 9:08 */public class DateUtil { public static final String PATTERN_01 = "yyyyMMdd"; public static final String PATTERN_02 = "yyyy-MM-dd"; public static final String PATTERN_03 = "yyyyMMddHHmmss"; public static final String PATTERN_04 = "yyyy-MM-dd HH:mm:ss"; /** * 按给定的格式获取当前日期的字符串 * * @date: 2021/1/25 15:10 */ public static String getDateString(String pattern) { Date date = new Date(); DateFormat df = new SimpleDateFormat(pattern); String datestr = df.format(date); return datestr; } /** * @description : 获取N天后的日期(N为负数时往前推) * @date 2021/1/25 15:15 */ public static String getDateByNum(String pattern, Integer num) { if (null == num) { num = 1; } Date date = new Date(); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); // 把日期往后增加一天.整数往后推,负数往前移动 calendar.add(Calendar.DATE, num); // 这个时间就是日期往后推一天的结果 date = calendar.getTime(); DateFormat df = new SimpleDateFormat(pattern); String datestr = df.format(date); return datestr; } /** * @description : 日期格式装换 * @date 2020/10/16 18:18 */ public static String formatDateString(String oldDate, String sourcePattern, String targetPattern) { String dataStr; try { DateFormat df1 = new SimpleDateFormat(sourcePattern); Date date = df1.parse(oldDate); DateFormat df2 = new SimpleDateFormat(targetPattern); dataStr = df2.format(date); } catch (ParseException e) { dataStr = oldDate; } return dataStr; } /** * 判断两个日期是否是同一周 * 思路: 因为1970年1月1是周四,所以(天数+4)/7 取整就是周数,如果相同就是同一周,反之就不是(是以星期一作为每周的第一天的) * * @param dateStr01 yyyy-MM-dd * @param dateStr02 yyyy-MM-dd * @return */ public static boolean isSameWeek(String dateStr01, String dateStr02, String pattern) { boolean flag = false; SimpleDateFormat sdf = new SimpleDateFormat(pattern); Date date01; Date date02; try { date01 = sdf.parse(dateStr01); date02 = sdf.parse(dateStr02); } catch (ParseException e) { return false; } if (null == date01 || null == date02) { return false; } // 一天的毫秒数 long dayMillisecond = 1000 * 60 * 60 * 24; // 计算两个日期的周数 long week01 = ((date01.getTime() / dayMillisecond) + 4) / 7; long week02 = ((date02.getTime() / dayMillisecond) + 4) / 7; // 如果两个日期周数相同说明在同一周 if (week01 == week02) { flag = true; } return flag; } /** * 计算当期日期的周数 * 1970年1月1是周四,所以(天数+4)/7 取整就是周数 * * @return */ public static long getNowWeekNum() { Date nowDate = new Date(); // 去掉时分秒,否则周日的周数有误差 SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_02); String newDateStr = sdf.format(nowDate); Date targetDate; try { targetDate = sdf.parse(newDateStr); } catch (ParseException e) { targetDate = new Date(); } // 一天的毫秒数 long dayMillisecond = 1000 * 60 * 60 * 24; long weekNum = ((targetDate.getTime() / dayMillisecond) + 4) / 7; return weekNum; }} 使用案例 import com.wzh.utils.DateUtil;/** * DateUtil 方法测试 * @date 2021/4/30 9:45 */public class DateUtilTest { public static void main(String[] args) { System.out.println("当前时间:" + DateUtil.getDateString(DateUtil.PATTERN_04)); System.out.println("4天后的日期是:" + DateUtil.getDateByNum(DateUtil.PATTERN_02, 4)); System.out.println("格式化后的日期是:" + DateUtil.formatDateString("20210430095124", DateUtil.PATTERN_03, DateUtil.PATTERN_04)); System.out.println("20210430跟20210505是否在同一周:" + DateUtil.isSameWeek("20210430", "20210505", DateUtil.PATTERN_01)); System.out.println("当前日期是第几周:" + DateUtil.getNowWeekNum()); }}

输出结果:

当前时间:2021-04-30 09:57:094天后的日期是:2021-05-04格式化后的日期是:2021-04-30 09:51:2420210430跟20210505是否在同一周:false当前日期是第几周:2678

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。