// 获取当前年份、月份、日期
Calendar cale = null;
cale = Calendar.getInstance();
// 获取当月第一天和最后一天
SimpleDateFormat formatTemp = new SimpleDateFormat("yyyy-MM-dd");
String firstday, lastday;
// 获取当前月的第一天
cale = Calendar.getInstance();
cale.add(Calendar.MONTH, 0);
cale.set(Calendar.DAY_OF_MONTH, 1);
firstday = formatTemp.format(cale.getTime());
// 获取当前月的最后一天
cale = Calendar.getInstance();
cale.add(Calendar.MONTH, 1);
cale.set(Calendar.DAY_OF_MONTH, 0);
lastday = formatTemp.format(cale.getTime());
System.out.println("firstday:"+firstday+" lastday:"+lastday);
//控制台输出
//firstday:2019-07-01 lastday:2019-07-31
-
java 每个月第一天_获取每月第一天最后一天 java
2021-03-22 14:51:31SimpleDateFormat format = new ...//获取前月的第一天Calendar cal_1=Calendar.getInstance();//获取当前日期cal_1.add(Calendar.MONTH, -1);cal_1.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月...SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
//获取前月的第一天
Calendar cal_1=Calendar.getInstance();//获取当前日期
cal_1.add(Calendar.MONTH, -1);
cal_1.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
firstDay = format.format(cal_1.getTime());
System.out.println("-----1------firstDay:"+firstDay);
//获取前月的最后一天
Calendar cale = Calendar.getInstance();
cale.set(Calendar.DAY_OF_MONTH,0);//设置为1号,当前日期既为本月第一天
lastDay = format.format(cale.getTime());
System.out.println("-----2------lastDay:"+lastDay);
//获取当前月第一天:
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, 0);
c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
String first = format.format(c.getTime());
System.out.println("===============first:"+first);
//获取当前月最后一天
Calendar ca = Calendar.getInstance();
ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
String last = format.format(ca.getTime());
System.out.println("===============last:"+last);
-
java获取每月最后一天
2018-02-10 06:37:27相信大家对这个题目——Java获取每个月的最后一天——都不陌生吧。其实,不纠结于最后一天啦,也可以是上个月的最后一天,下个月的第一天,等等之类的。我发现网上都是写好的一些例子,提供给大家解决那些固定要获取...一个小问题,成为了一个坑。
相信大家对这个题目——Java获取每个月的最后一天——都不陌生吧。其实,不纠结于最后一天啦,也可以是上个月的最后一天,下个月的第一天,等等之类的。我发现网上都是写好的一些例子,提供给大家解决那些固定要获取的一个月的最后一天或者第一天,但是代码注释却又惜字如金,导致使用者在完全不理解的情况下,Ctrl+C和Ctrl+V,一个坑就暗含在了这里。
先上一组“凌乱”的代码,根据方法名,这个函数是要求得每月的最后一天:
public static String getDateLastDay(String year, String month) { //year="2018" month="2" Calendar calendar = Calendar.getInstance(); // 设置时间,当前时间不用设置 calendar.set(Calendar.YEAR, Integer.parseInt(year)); calendar.set(Calendar.MONTH, Integer.parseInt(month)); // System.out.println(calendar.getTime()); calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE)); DateFormat format = new SimpleDateFormat("yyyy-MM-dd "); return format.format(calendar.getTime()); }
解析:
1. 对于这两行代码:calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE));
产生了一条冗余代码,首先Calendar.DAY_OF_MONTH和Calendar.DATE,本来就是一回事,如果你进入该行的JDK API你就会发现如下的解释:
/** * Field number for <code>get</code> and <code>set</code> indicating the * day of the month. This is a synonym for <code>DATE</code>. * The first day of the month has value 1. * * @see #DATE */ public final static int DAY_OF_MONTH = 5;
这里明确阐明了DAY_OF_MONTH是DATE的同义词,可以理解成别名。
因此,JDK对于 Calendar.DAY_OF_MONTH和Calendar.DATE的取值都是“5”,所以看到有人一会用Calendar.DAY_OF_MONTH进行calendar实例对象的set,一会又用Calendar.DATE进行calendar实例对象的set,可见没有理解这两行代码的意思。那个老生常谈的问题。Calendar的体系中,month是从“0”开始数,Day却是从“1”开始数。
对于month来讲,这句话calendar.set(Calendar.MONTH, Integer.parseInt(month)); 如果设置的是1,那么下面的这句System.out.println(calendar.getTime());打印的将是3月的当前日,可见month是从“0”开始计数;同样的,对于Day,上面的那段JDK代码中也说了“The first day of the month has value 1.” 所以,在这里java8之前的JDK版本对于Calendar的设计确实是存在着凌乱的,也是容易让我们程序员感到困惑的点。calendar.set和 calendar.add。曾经我也犯过这样的错误,把add和set混用,其实对于set来说,你按照month从0开始,day从1开始这条规则设置的某个月的第几天就是第几天,对比add,也确实是在“0和1”的基线上加天数和月数。
如果改成这样:
Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, 2018); calendar.set(Calendar.MONTH, 2); System.out.println(calendar.getTime()); calendar.add(Calendar.MONTH, 3); System.out.println(calendar.getTime());
先后打印的结果就是:
Tue Mar 06 10:50:38 CST 2018 Wed Jun 06 10:50:38 CST 2018
没有问题。
我们可以把Calendar的设置简单想成一个指针,set和add都是以你设置的日期为基准加上之前提到的“0和1”规则,进行指针移动,如果想要后退指针,那么很简单,set或者add负数就可以了。- calendar.set(Calendar.DAY_OF_MONTH, 0)的作用。我们之前说了,day是从1开始的,那么这句话又是什么鬼呢。其实很容易理解,如果按照第三条贴出的代码,此时指针指向了2018-06-06,那么再执行这句话就相当于将指针的天数归零,然后后退一个月,也就是会输出2018-05-31 。记住,如果你这样执行:
Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, 2018); calendar.set(Calendar.MONTH, 2); System.out.println(calendar.getTime()); calendar.add(Calendar.MONTH, 3); System.out.println(calendar.getTime()); calendar.set(Calendar.DAY_OF_MONTH, 12); calendar.set(Calendar.DAY_OF_MONTH, 0);
先设置了日子12,这时变成2018-06-12,再执行归零操作,那么还是变为2018-05-31,所以这句话就是将当前指针指向的日期回退到上个月的最后一天。
- calendar.getActualMaximum(Calendar.DATE))。在最初的凌乱代码中贴出的calendar.getActualMaximum(Calendar.DATE))这句话需要跟“归零”操作区分开,这句话是真真正正的求当前指针指向的月份的最后一天。强烈不建议把calendar.getActualMaximum(Calendar.DATE))放在calendar.set中,因为会让你对指针走到哪里了产生困惑,尤其在加入了“归零”操作的代码中,比如:
Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, 2018); calendar.set(Calendar.MONTH, 2); System.out.println(calendar.getTime()); //此处是三月 calendar.add(Calendar.MONTH, 3); System.out.println(calendar.getTime()); //此处是六月 calendar.set(Calendar.DAY_OF_MONTH, 12); System.out.println(calendar.getTime()); //此处是6.12 calendar.set(Calendar.DAY_OF_MONTH, 0); //此处是5.31 System.out.println(calendar.getActualMaximum(Calendar.DATE)); //此处是5月份的31天 System.out.println(calendar.getTime()); //此处是5.31 calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE)); DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); System.out.print(format.format(calendar.getTime()));
我想这个例子看了我如下的操作以后,大家都会有困惑的:以上代码最后输出的是2018-05-31,如果你理解了之前讲的,这个结果是没有问题的。但是,如果我把这行:System.out.println(calendar.getTime()); //此处是5.31 注释掉,大家可以试一下,最后的输出结果是2018-07-01。
为什么?这个留给大家作为思考题,因为需要自己跟代码才有印象,总之这里的结果如同执行了——
calendar.add(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE));—— “add”方法,而不是“set”方法,因为结果就是在5.31的基础上加上了31天,正好是7.1。困惑吧,实话说我都没有信息继续深究了,因为太凌乱了,所以,最好就是不要这样写。即不夹杂“归零”操作,也不在set方法中使用这句代码calendar.getActualMaximum(Calendar.DATE),calendar.getActualMaximum()方法就是获得当前月的最大天数,就只是这么用就好了。
- 这里还要提到的一个Tip就是DateFormat是线程不安全的,也就是说如果两个线程同时操作最初代码片段中的最后两句话,结果会出现意想不到的事情。
那么,既然Calendar有这样那样的问题,而且时不时会出现凌乱的代码——也可以看出这是JDK最初设计上的一些瑕疵——那么JDK对这部分有没有升级呢?答案当然是肯定的。下面我就介绍一下Java8针对Calendar实现的一个完全的修改。
Java8中引入了LocalDate、LocalTime、Instant、Duration和Period,这也是Oracle在原生的Java API中为引入对日期和时间的高质量的支持整合第三方日期和时间库Joda-Time的基础上提出的。它们都存在于java.time包下:
LocalDate localDate = LocalDate.of(2018, 2, 6); int year = localDate.getYear(); Month month = localDate.getMonth(); int day = localDate.getDayOfMonth(); DayOfWeek dow = localDate.getDayOfWeek(); int len = localDate.lengthOfMonth(); boolean bool = localDate.isLeapYear(); LocalDate today = LocalDate.now(); System.out.println(year); // 2018 System.out.println(month); // FEBRUARY System.out.println(day); // 6 System.out.println(dow); // TUESDAY System.out.println(len); // 28 System.out.println(bool); // false System.out.println(today); // 2018-02-06
是不是一目了然呢,或许都不用做过多的解释,你就能获取你想要的日期的某一个部分了。而且,最后一个用LocalDate.now()直接获取的是格式化好的日期格式,而不是看起来有点凌乱的这种格式“Sat Feb 10 06:38:55 CST 2018”,是不是很优雅呢。(最后一个是判断闰年,提醒大家,不要自己判断闰年,但是测试的时候一定要考虑到这个规则:能被4和400整除的是闰年,能被100整除的不是闰年)。
同样的新的日期时间JDK也提供了可读性强的枚举类型来实现如上的代码,比如:
int year_value = localDate.get(ChronoField.YEAR); int month_value = localDate.get(ChronoField.MONTH_OF_YEAR); int day_value = localDate.get(ChronoField.DAY_OF_MONTH); System.out.println(year_value); // 2018 System.out.println(month_value); // 2 System.out.println(day_value); // 6 /* * YEAR( * "Year", * ChronoUnit.YEARS, * ChronoUnit.FOREVER, * ValueRange * .of(-999999999L, * 999999999L), * "year" */
ChronoField实现了TemporalField接口,如果深入到底层代码你会发现我在最后贴出的注释样的源代码——列出了取值范围——等等,大家有兴趣可以参考。
LocalTime也是一样,可以通过getHour()、getMinute()和getSecond()方法获取小时、分钟和秒数。
上面提到了DateFormat在多线程的环境下会出现意想不到的结果,新的JDK也给我们提供了新的选择——DateTimeFormatter,所有的DateTimeFormatter实例都是线程安全的,因此我们可以用单例模式创建格式器实例,然后共享它。
LocalDate localDate = LocalDate.of(2018, 2, 6); String str1 = localDate.format(DateTimeFormatter.BASIC_ISO_DATE); String str2 = localDate.format(DateTimeFormatter.ISO_LOCAL_DATE); LocalDate date1 = LocalDate.parse("20180206", DateTimeFormatter.BASIC_ISO_DATE); LocalDate date2 = LocalDate.parse("2018-02-06", DateTimeFormatter.ISO_LOCAL_DATE); System.out.println(str1); //20180206 System.out.println(str2); //2018-02-06 System.out.println(date1); //2018-02-06 ?不知道为什么这句话打印的不是期望的20180206,大家可以帮我看看,我也会在后续的博客中更新调查结果。 System.out.println(date2); //2018-02-06
正如代码显示的可以使用format方法按照DateTimeFormatter提供的静态成员变量取值进行想要的日期格式化,使用parse获取期望格式的LocalDate对象。
最后,介绍一下对日期和时间的操纵,也是对开篇提到的那段凌乱代码的一个交代。新的JDK提供了对日子和月份加减的优化处理,可读性和简洁性非常棒。
LocalDate localDate = LocalDate.of(2018, 2, 6); LocalDate localDate1 = localDate.withYear(2019); //年份修改为2019 LocalDate localDate2 = localDate1.withDayOfMonth(25); //日改为25 LocalDate localDate3 = localDate2.with(ChronoField.MONTH_OF_YEAR, 9); //月份改为9 LocalDate localDate4 = localDate3.plusWeeks(1); //此时的日期是2019-09-25,在此基础上增加一周是2019-10-02 LocalDate localDate5 = localDate4.minusYears(3); //减去三年 2016-10-02 LocalDate localDate6 = localDate5.plus(6, ChronoUnit.MONTHS); //加上六个月2017-04-02 /* 使用TemporalAdjuster进行更复杂的日期调整 */ //获取以2017-04-02为基准,第一个符合指定星期几要求的日期,2017-04-02就是星期日,程序会直接返回该对象 LocalDate localDate7 = localDate6.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY)); //获取2017-04-02所处月份的最后一天,同步取值还有lastDayOfNextMonth/firstDayOfMonth/firstDayOfNextMonth,等等 LocalDate localDate8 = localDate7.with(TemporalAdjusters.lastDayOfMonth()); System.out.println(localDate); //2018-02-06 System.out.println(localDate1); //2019-02-06 System.out.println(localDate2); //2019-02-25 System.out.println(localDate3); //2019-09-25 System.out.println(localDate4); //2019-10-02 System.out.println(localDate5); //2019-10-02 System.out.println(localDate6); //2017-04-02 System.out.println(localDate7); //2017-04-02 System.out.println(localDate8); //2017-04-30
最后的最后,再唠叨两句:
首先,新的JDK处理日期和时间的方式是在JDK8的前提下支持的,如果你的代码还是JDK7或者以下,那么你只能小心的使用Calendar了;
其次,这里针对新的日期和时间处理方式介绍的还不够详细,比如JDK8对日期和时间的处理同时还支持处理不同的时区和历法、利用和UTC/格林尼治时间的固定偏差计算时区以及使用别的日历系统,类似伊斯兰教日历这种复杂的日历。我准备再单独开一篇博客专门介绍,并且提供几个成熟且常用的工具类方法,这次就写到这里了,还要去加班 :)
最后,真的希望光大的程序员小伙伴看看英文,因为再读源码的时候你真的可以省去很多时间,同时也会增加你的耐心,因为对英文头大的同学会看不下去。同时,对于输出结果,比如很简单的Mar和May,英文的熟悉能够帮你迅速的解除类似的混淆,尤其是在焦急的解决bug的时候,我就曾经遇到过把Mar当成May对着输出结果发呆的小伙伴。真心谢谢你能看到这里,其中的错漏之处还望海涵,我会继续努力的!
-
java获取每月的第一天和最后一天
2019-08-04 17:42:00// 获取当前年份、月份、日期 Calendar cale = null; cale = Calendar.... // 获取当月第一天和最后一天 SimpleDateFormat formatTemp = new SimpleDateFormat("yyyy-MM-dd"); String firstday, lastday;...转载于:https://www.cnblogs.com/yonyong/p/11298962.html
-
获取每月第一天最后一天 java
2015-06-04 09:53:00SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); //获取前月的第一天 Calendar cal_1=Calendar.getInstance();//获取当前日期 cal_1.add(Calendar.MONTH, ...SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); //获取前月的第一天 Calendar cal_1=Calendar.getInstance();//获取当前日期 cal_1.add(Calendar.MONTH, -1); cal_1.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天 firstDay = format.format(cal_1.getTime()); System.out.println("-----1------firstDay:"+firstDay); //获取前月的最后一天 Calendar cale = Calendar.getInstance(); cale.set(Calendar.DAY_OF_MONTH,0);//设置为1号,当前日期既为本月第一天 lastDay = format.format(cale.getTime()); System.out.println("-----2------lastDay:"+lastDay); //获取当前月第一天: Calendar c = Calendar.getInstance(); c.add(Calendar.MONTH, 0); c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天 String first = format.format(c.getTime()); System.out.println("===============first:"+first); //获取当前月最后一天 Calendar ca = Calendar.getInstance(); ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH)); String last = format.format(ca.getTime()); System.out.println("===============last:"+last);
转载于:https://www.cnblogs.com/sprinng/p/4550968.html
-
java获取每月最后一天2021-03-29
2021-03-29 19:01:16相信大家对这个题目——Java获取每个月的最后一天——都不陌生吧。其实,不纠结于最后一天啦,也可以是上个月的最后一天,下个月的第一天,等等之类的。我发现网上都是写好的一些例子,提供给大家解决那些固定要获取... -
java 获取每个月的第一天和最后一天,区分闰年和平年
2020-11-27 19:13:10/** * @Description 日期帮助类 * @Author WangKun * @Date 2020-11-27 15:47 ... * @Description 获取每月的第一天 * @param month * @Throws * @Return java.lang.String * @Date 2020-11-27 16:30:13 .. -
java 获取上个月最后一天,本月最后一天,下月第一天,每个自然月的第一天和最后一天
2019-05-10 15:23:05采用joda-Time获取。 一:以下引入的jar包是:import org....获取上个月的最后一天: LocalDate lastDayOfPreviousMonth = LocalDate.now().minusMonths(1).dayOfMonth().withMaximumValue(); 2.获取当前月... -
java 获取时间段范围内的每月的第一天和最后一天日期
2020-05-12 16:10:49针对上面获取每周的周一和周日、我继续写了一个获取每个月的1号和月底 日期 /** * 获取某段时这里写代码片间内的所有日期 * * @param dBegin * @param dEnd * @return */ public static List<String> ... -
java获取当前年的每一个月份的第一天和最后一天
2018-10-22 17:28:38日历如何获取当前年的每一个月份的第一天和最后一天 实现2月的平年瑞年最后天数 首先先了解一下日历的两个方法 getLeastMaximum getActualMaximum import java.text.SimpleDateFormat; import java.util... -
java 每年第一天_java获取当前年的每一个月份的第一天和最后一天-Go语言中文社区...
2021-02-28 15:57:47实现2月的平年瑞年最后天数首先先了解一下日历的两个方法getLeastMaximumgetActualMaximumimport java.text.SimpleDateFormat;import java.util.Calendar;public class DateUtil {public static String ... -
java for 循环根据一个日期 获取这个月的每一天_用Java程序实现日历功能
2021-01-10 22:13:12第一句是一串文字我们直接打印输出就可以了,这里要用一个键盘录入2.第二步我们要做的是把我们的日期用for循环表示出来3.第三步我们需要调整格式,首先分析这个输入的日期,我们要把输入的String类型首先转换成日期... -
java当月最后一天_用JavaScript获取当月第一天和最后一天
2021-03-01 07:40:38获取当月的第一天和当月的最后一天其实还挺麻烦的,因为每个月天数可能不一样。不过借助 Date 对象则很容易实现:构造函数new Date();new Date(value);new Date(dateString);new Date(year, month[, day[, hour[, ... -
Java获取当前时间的前后指定N个月时间(近N个月时间校验)
2020-08-24 17:23:21获取近N个月以及每月的第一天及最后一天 public boolean timeCMonth(String date) { String lastDay = ""; String firstDay = ""; SimpleDateFormat format = new SimpleDateFormat("yyyy-MM"); //获取前月的第... -
月份java题_一道java程序题:相关月: 是指几个月份的第一天星期数相同的月?
2021-03-09 09:16:55展开全部publicstaticvoidmain(String[]args){//创建一个长度为12的数e69da5e887aa3231313335323631343130323136353331333433646336组存储12个月的第一天的星期数StringmonthWeek[]=newString[12];//循环获取2021年... -
java有没计算每个月几周的方法
2013-09-03 15:49:28做个小东西,类似课程表,上面有一行导航栏,显示这个月每周的日期,要求每月第一天如果是上个月最后一周的延续,则显示上个月最后一周,比如2013年9月导航栏显示的信息为 2013/08/26-2013/09/01 2013/09/02-... -
java Calendar获取时间
2012-12-11 20:27:47究竟什么是一个 Calendar 呢?中文的翻译就是日历,那...阴(农)历,每个月固定28天每周的第一天 - 阳(公)历星期日是第一天;阴(农)历,星期一是第一天。 实际上,在历史上有着许多种纪元的方法。它们的差异实... -
java查询当前时间是当前月的第几周
2021-03-01 17:54:481.按顺序遍历这个月的每一天,传入List集合 2.遍历List集合按照星期存入Map结合 3.获取这个月的1号是星期几,遍历比这星期数小的map集合中的数组前追加一个空字符串或其他内容,以当前日期所在的小标+1为当月的的第... -
java 自然周_java 使用Calendar类计算每月有多少自然周,并输出每周的开始和结束日期...
2021-03-09 22:30:05思路:首先是获取该月的实际天数,然后从1号遍历直至该月最后一天,利用Calendar类找出该日是一周中的第几天,(1)若该日是周日,则视为一周结束,并用该日期减去6找到该周的开始日期,若相减结果小于等于1,则说明该... -
java 使用Calendar类计算每月有多少自然周,并输出每周的开始和结束日期
2017-12-25 14:27:40思路:首先是获取该月的实际天数,然后从1号遍历直至该月最后一天,利用Calendar类找出该日是一周中的第几天,(1)若该日是周六,则视为一周结束,并用该日期减去6找到该周的开始日期,若相减结果小于等于1,则说明... -
用java写的一个日历程序,因为答辩急着用,有没有大佬帮忙注释一下每个模块的作用!!!
2019-01-01 19:37:21public int firstDay() // 用来计算并判断该年第一天是星期几 { long n = year * 365; for (int i = 1; i ; i++){ if (isLeapYear(i)){ n++; } } return (int)n%7; } public void printWeek... -
用java写的一个日历程序,新手看不懂,有没有大佬帮忙注释一下每个模块的意思和作用!!!
2019-01-02 08:33:58public int firstDay() // 用来计算并判断该年第一天是星期几 { long n = year * 365; for (int i = 1; i ; i++){ if (isLeapYear(i)){ n++; } } return (int)n%7; } public void printWeek... -
需要一个JAVA采集器的框架
2019-01-29 20:25:13我需要对人民网地方领导留言板的留言进行遍历采集,需要一个JAVA采集器,MYSQL数据库方面我会来解决,功能主要是: 1、对每条JSON内容进行采集。 2、对JOSN里面TID的页面内容,也就是在 [查看全文]点开后进行详细... -
java gui 日历_java-公历日历GUI-问题
2021-02-27 20:48:09我必须为我的Java类制作一个功能齐全的日历,...我在将月份的第一天(七月)放入正确的JButton时遇到问题.日历将月份识别为7月,将年份识别为2012,但是它将星期一(而不是星期天)设置为1,并且相隔一周.这是我的代码,感... -
java联系题
2013-09-18 20:22:53接收三个参数分别是年,月,日,然后返加一个Calender类型的对象,再设计一个方法接收Calender类型对象,在方法内分别打印此日期是一个月的第几天,一年的第几天,一周的第几天,此天是周几,这个月的第一天是周几,... -
在Java中玩转时间
2019-09-01 20:49:291 获取前几个月每个月的第一天和最后一天 我们先来看看获取这个月的第一天和最后一天的日期的代码: public static void main(String[] args) { SimpleDateFormat sdfMonthDay = new SimpleDateFormat("yyyy-MM-dd... -
java日期工具,包含大量时间操作。
2019-07-02 11:07:05关于计算相差天数,每月的第一天,每月的最后一天,每年的天数等等实际操作。 public class DateUtil { //获取某个月有多少天 public static Integer getDayByMonth(Date date) { Calendar cal = Calendar....