Java 获取日期前一年、月、日,指定日期的前几天,后几天

news/2024/11/29 20:45:32/

1. 方法1: 如果是 java8, 可以使用 LocalDate 获取

         // 获取当前日期前一天的日期LocalDate localDate = LocalDate.now().minusDays(1);//1代表提前多少天// 获取时间字符串如: 2023-03-01System.out.println(localDate.toString());// 获取当前年如 2023System.out.println(localDate.getYear());// 获取当前月如 3System.out.println(localDate.getMonthValue());// 获取当前天如 1System.out.println(localDate.getDayOfMonth());//获取前一天的日期String date = localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));//转为String类型

LocalDate转化为指定格式的字符串

方法1

        LocalDate localDate = LocalDate.parse("2022-02-02");String date = localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));System.out.println(date); //2022-02-02

方法2

        LocalDate localDate = LocalDate.parse("2022-02-02");DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");String date = dtf.format(localDate);System.out.println(date); //2022-02-02

2. 方法2: 使用 Calendar

        //获取当前日期Date date = new Date();//将时间格式化成yyyy-MM-dd HH:mm:ss的格式SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//创建Calendar实例Calendar cal = Calendar.getInstance();//设置当前时间cal.setTime(date);//在当前时间基础上减一年cal.add(Calendar.YEAR, -1);  System.out.println(format.format(cal.getTime()));//在当前时间基础上减一月cal.add(Calendar.MONTH,-1);System.out.println(format.format(cal.getTime()));//同理增加一天的方法:cal.add(Calendar.DATE, 1);System.out.println(format.format(cal.getTime()));

3. 获取指定时间

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//定义日期显示格式String now = sdf.format(new Date());//当前日期String nowMonthLateDay = getNextDays(now, "-1");//当前日期的前一天Calendar datees = Calendar.getInstance();String years = String.valueOf(datees.get(Calendar.YEAR)) + "-11-15";//获取当前年的11-15
 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//定义日期显示格式Calendar c = Calendar.getInstance();c.add(Calendar.MONTH, -1);//当前月减去一个月String before = sdf.format(c.getTime());//上个月的当前日期String now = sdf.format(new Date());//当前日期String nowMonthLateDay = getNextDay(now, "-1");//当前日期的前一天String lateMonthLateDay = getNextDay(before, "-1");//上个月的当前日期的前一天Calendar cal = Calendar.getInstance();
//        int m=cal.get(Calendar.MONTH)+1;//获取当前月份
//        System.err.println("当前月份:"+m);String nowMonthFirstDay = getFirstDayOfMonth(1);//获取当前月份的第一天cal.add(Calendar.MONTH, -1);cal.set(Calendar.DAY_OF_MONTH, 1); //重写当前日期String lateMonthFirstDay = sdf.format(cal.getTime());//获取上个月的第一天

4. 获取当前年度,如果超过某个时间,就减去一年或者加上一年

  Date date = new Date();//获取日期SimpleDateFormat dateFormats= new SimpleDateFormat("yyyy");//日期格式String year=dateFormats.format(date);//获取当前年度DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");//把String转为LocalDateLocalDate localTime=LocalDate.parse(year+"-06-30",dtf);Integer years=Integer.valueOf(year);if (!LocalDate.now().isAfter(localTime)){//判断时间是否超过years=Integer.valueOf(year)-1;}System.err.println(years);}

5. 获取时间的工具类

 /*** 将短时间格式字符串转换为时间 yyyy-MM-dd** @param strDate* @return*/public static Date strToDate(String strDate) {SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");ParsePosition pos = new ParsePosition(0);Date strtodate = formatter.parse(strDate, pos);return strtodate;}/*** 得到一个时间延后或前移几天的时间,nowdate为时间,delay为前移或后延的天数*/public static String getNextDay(String nowdate, String delay) {try {SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");String mdate = "";Date d = strToDate(nowdate);long myTime = (d.getTime() / 1000) + Integer.parseInt(delay) * 24 * 60 * 60;d.setTime(myTime * 1000);mdate = format.format(d);return mdate;} catch (Exception e) {return "";}}/*** 得到一个时间延后或前移几天的时间,nowdate为时间,delay为前移或后延的天数*/public static String getNextDays(String nowdate, String delay) {try {SimpleDateFormat format = new SimpleDateFormat("-MM-dd");String mdate = "";Date d = strToDate(nowdate);long myTime = (d.getTime() / 1000) + Integer.parseInt(delay) * 24 * 60 * 60;d.setTime(myTime * 1000);mdate = format.format(d);return mdate;} catch (Exception e) {return "";}}/*** 获取当前小时** @return*/public static String getTimeShort() {SimpleDateFormat formatter = new SimpleDateFormat(" HH");Date currentTime = new Date();String dateString = formatter.format(currentTime);return dateString;}/*** 获取当前月第一天** @param month* @return*/public static String getFirstDayOfMonth(int month) {Calendar calendar = Calendar.getInstance();// 设置月份calendar.set(Calendar.MONTH, month - 1);// 获取某月最小天数int firstDay = calendar.getActualMinimum(Calendar.DAY_OF_MONTH);// 设置日历中月份的最小天数calendar.set(Calendar.DAY_OF_MONTH, firstDay);// 格式化日期SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String firstDays = sdf.format(calendar.getTime());return firstDays;}
//g过去年度public  static String gerLateYear(Integer num){SimpleDateFormat format = new SimpleDateFormat("yyyy");Calendar c = Calendar.getInstance();//过去一年c.setTime(new Date());c.add(Calendar.YEAR, num);Date y = c.getTime();String year = format.format(y);return  year;}//判断是否超过指定时间public static boolean afterDate(String date) {DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");//把String转为LocalDateLocalDate localTime = LocalDate.parse(date, dtf);//判断当前日期是否大于指定日期return LocalDate.now().isAfter(localTime);}

http://www.ppmy.cn/news/749899.html

相关文章

rust warp框架教程1-helloworld

warp框架简介 warp is a super-easy, composable, web server framework for warp speeds. warp建立在hyper之上,因此,warp天生支持异步,HTTP/2,以及“正确的HTTP实现”。 warp的强大之处在于其提供的filter系统,它…

excel任意单元格中自动插入页码和总页数

一:用于一个工作表打印时可分为多页的情况。 二:用于多个工作表,每个工作表代表一页的情况。 一:用于一个工作表打印时可分为多页的情况。 公式→名称管理器→新建→范围(当前工作表) 1、定义两个名称&…

npoi 添加 xls页眉页脚重复标题页码

npoi 添加 xls页眉页脚重复标题页码 private static void TestHyf() { IWorkbook book new HSSFWorkbook(); ISheet sheet book.CreateSheet("test"); ICellStyle cellStyle book.CreateCellStyle(); cellSty…

php操作Word之com组件-获取word文档页码和更新目录

此文章包含: 1、win10系统中:com组件配置和为什么找不到 Microsoft Word 97 - 2003 文档 的解决方法 2、调用com获取word文档总页码 3、调用com自动更新文档目录、或只更新word原目录的页码 一.com组件 1.1打开和配置: 参考资料 https://…

Java版本企业电子招投标采购系统源码功能模块功能描述+数字化采购管理 采购招投标

功能模块: 待办消息,招标公告,中标公告,信息发布 描述: 全过程数字化采购管理,打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力,为外部…

java excel 分页分组,[分享]Excel报表分组分页及各组分页码总页码

1 100801新版后系统可以自动为分组的分页来补空行了,所以代码也不同了:更新如下,请自己放入按钮中吧 2 应用了e-png老弟的强制换行代码, 解决了分页小计在分组合计行的后面的问题(见三楼图那样的尴尬样子) Dim cp As String DataTables("订单").GetComboListStr…

ExcelVBA之 sheet隐藏

一般保护工作表采取的方法是用 EXCEL 菜单中的"保护"命令,有时候这还不够,比如一些机密文件要让某些使用者完全无法看到,但又需要他来操作工作簿中的其他表,应该怎么办呢? 此时可以打开 VBA 编辑器&#xf…

word excel转pdf,pdf合并,插入页码

word excel转pdf,pdf合并,插入页码 将word转换为pdf,excel转换为pdf.pdf合并及在最终的pdf中添加页码 word转换为pdf String wordPath "C:\\Users\\cada\\Documents\\Tencent Files\\csasd\\FileRecv\\asdasd.docx";if(AsposeWordUtil.isLicense()){Document docu…