给一个日期串,在不使用calendar,不计算平闰年的情况下计算当月天数
2017-08-30 00:00
141 查看
摘要: 计算天数
小弟最近面试,以为面试官:给一个日期串,在不使用calendar,不计算平闰年的情况下计算当月天数,怎么计算?
当时小弟觉得,这完全是被帮助手脚被人啪啪啪的感觉啊。。浑身不自在。后来说
这个对象可以搞定。但面试官又问了。如果是自己实现呢?没回答出来。
今天请教了一些大牛,给了一些思路。最后搞出来了。
思路:将日期串转换成date对象,然后获取到下个月的第一天,再减1天,得到当前月的最后1天,最后在获取这一天就行了
我发现使用date的setDate(0)后,能将date对象变成上个月的最后1天,官网是这么解释的
将该日期的日期设置为
*指定值。该对象被修改为
*表示在指定日期内的某一时间点。
*月、年、月、小时、分、秒相同。
*如以前在当地时区所解释的那样。如果日期
*是4月30日,例如,日期定为31,然后
*将被视为5月1日,因为四月只有
* 30天。
*
* @param日期当天的月值之间1-31。
*“看java.util.calendar
*“过时的JDK版本1.1,
* <代码>历取代。集(calendar.day_of_month,int日期)</代码>。
最后附上DateTime的用法
小弟最近面试,以为面试官:给一个日期串,在不使用calendar,不计算平闰年的情况下计算当月天数,怎么计算?
当时小弟觉得,这完全是被帮助手脚被人啪啪啪的感觉啊。。浑身不自在。后来说
org.joda.time.DateTime
这个对象可以搞定。但面试官又问了。如果是自己实现呢?没回答出来。
今天请教了一些大牛,给了一些思路。最后搞出来了。
思路:将日期串转换成date对象,然后获取到下个月的第一天,再减1天,得到当前月的最后1天,最后在获取这一天就行了
package com.wisely; import org.joda.time.DateTime; import java.text.SimpleDateFormat; import java.util.Date; /** * DES: 计算当月的天数,不用calendar 不计算平闰年 * Created by Reynole-白 * Date: 2017/8/30 10:06 */ public class TestDate { public static void main(String[] args) throws Exception { String dateStr = "2017-08-30"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date dd = sdf.parse(dateStr); //date对象计算月份从0开始,如果+1 代表下个月 int month = dd.getMonth() + 1; //获取到下个月的月份 dd.setMonth(month); //下个月的首日 dd.setDate(1); //下个月的首日-1 的到当前月的最后1天 也就是当前月的天数 dd.setDate(dd.getDate()-1); System.out.println("当前月的天数:" + dd.getDate()); //------------------------------------------------------------------------------- //使用joda-time 操作 DateTime dateTime = new DateTime(dateStr); System.out.println("获取当前月的天数:"+dateTime.dayOfMonth().getMaximumValue()); } }
我发现使用date的setDate(0)后,能将date对象变成上个月的最后1天,官网是这么解释的
将该日期的日期设置为
*指定值。该对象被修改为
*表示在指定日期内的某一时间点。
*月、年、月、小时、分、秒相同。
*如以前在当地时区所解释的那样。如果日期
*是4月30日,例如,日期定为31,然后
*将被视为5月1日,因为四月只有
* 30天。
*
* @param日期当天的月值之间1-31。
*“看java.util.calendar
*“过时的JDK版本1.1,
* <代码>历取代。集(calendar.day_of_month,int日期)</代码>。
最后附上DateTime的用法
相关文章推荐
- 8.4 编写一个日期类,实现日期的加天数、减天数和输出操作(不考虑闰年的情况, 2 月份固定为 28 天)。
- 输入一个日期,判断这个日期在一年中是哪一天,是星期几,计算两个日期间的天数,使用字符串输出日期
- Calendar类计算两个日期之间相差天数
- 用户输入一个日期,计算时星期几,并计算时一年中的某一天,使用自定义方法判断
- java可以使用计算日期的天数差,以下是详细代码:{转自百度知道....}
- java 使用Calendar类计算每月有多少自然周,并输出每周的开始和结束日期
- calendar 计算两个日期之间相隔的天数
- 计算一个日期中在一年中所经过的天数
- 利用Java中Calendar计算两个日期之间的天数和周数
- java学习之旅67--常用类_Calendar和GregorianCalendar的使用_日期计算
- 4、编写一个程序,计算两个日期之间所经过的天数
- 使用SQL语句取相关日期(当月天数,当月第一天,当月最后一天,本年最后一天,当月第一个星期)
- java 使用Calendar类计算每月有多少自然周,并输出每周的开始和结束日期
- PHP日期操作类代码-农历-阳历转换、闰年、计算天数等
- 如何计算两个日期之间相隔的天数?calendar的用法
- Calendar计算两个日期之间的天数和周数
- PHP日期操作类代码-农历-阳历转换、闰年、计算天数等
- [转]使用SQL语句取相关日期(当月天数,当月第一天,当月最后一天,本年最后一天,当月第一个星期) 日期转字符串
- 今天写的一个正则式:匹配日期并考虑闰年和2月份在内等情况
- 算两个日期相差天数之使用Calendar类型注意事项