Java 生成具有给定月份和年份的日历
当月和年是输入参数时,如何生成日历Java 生成具有给定月份和年份的日历,java,calendar,Java,Calendar,当月和年是输入参数时,如何生成日历 注意:我已经计算了一个月包含的天数。为什么不这样 Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, year); cal.set(Calendar.MONTH, month); 为什么不这样呢 Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, year); cal.set(Calendar.MONTH, mont
注意:我已经计算了一个月包含的天数。为什么不这样
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month);
为什么不这样呢
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month);
请注意,这样做将自动重新计算其余字段(例如一个月有多少天,等等)。您还可以在日历上使用add()函数来添加天数,它也会考虑所有这些
另见:
请注意,这样做将自动重新计算其余字段(例如一个月有多少天,等等)。您还可以在日历上使用add()函数来添加天数,它也会考虑所有这些
另见:
当然,对于日期时间操作,我应该建议使用DateTime
而不是Calendar
当然,对于日期时间操作,我应该建议使用DateTime
而不是Calendar
。使用java.time
现代的方法是使用java.time类来取代麻烦的旧式Calendar
&Date
类
YearMonth
这个类表示一年零一个月,没有任何日期、时间或时区
YearMonth ym = YearMonth.of( 2017 , Month.MARCH );
LocalDate
您可以从中生成LocalDate
LocalDate firstOfMonth = ym.atDay( 1 );
LocalDate endOfMonth = ym.atEndOfMonth();
如果希望日期介于两者之间,请循环。一次增加一天的日期。检查每天是否仍在相同的YearMonth
。如果不是,您的增量太大,可以停止
List<LocalDate> dates = new ArrayList<>( 31 );
LocalDate localDate = ym.atDay( 1 );
while ( YearMonth.from( localDate ).equals( ym ) {
dates.add( localDate );
// Set up the next loop.
localDate = localDate.plusDays( 1 );
}
列表日期=新的ArrayList(31);
LocalDate LocalDate=ym.atDay(1);
while(YearMonth.from(localDate).等于(ym){
dates.add(localDate);
//设置下一个循环。
localDate=localDate.plusDays(1);
}
关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,如,& 该项目现已启动,建议迁移到类 要了解更多信息,请参阅.和搜索堆栈溢出以获取许多示例和解释。规范为 从哪里获得java.time类
- 后来
- 内置的
- 标准JavaAPI的一部分,带有捆绑实现
- Java9添加了一些次要功能和修复
- 及
- 大部分java.time功能都在中向后移植到Java6和Java7
-
- 该项目专门为Android采用了ThreeTen Backport(如上所述)
- 看
Calendar
&Date
类
YearMonth
这个类表示一年零一个月,没有任何日期、时间或时区
YearMonth ym = YearMonth.of( 2017 , Month.MARCH );
LocalDate
您可以从中生成LocalDate
LocalDate firstOfMonth = ym.atDay( 1 );
LocalDate endOfMonth = ym.atEndOfMonth();
如果希望日期介于两者之间,请循环。将日期一次递增一天。检查每一天是否仍在相同的YearMonth
。如果不是,则说明您的日期递增过多,可以停止
List<LocalDate> dates = new ArrayList<>( 31 );
LocalDate localDate = ym.atDay( 1 );
while ( YearMonth.from( localDate ).equals( ym ) {
dates.add( localDate );
// Set up the next loop.
localDate = localDate.plusDays( 1 );
}
列表日期=新的ArrayList(31);
LocalDate LocalDate=ym.atDay(1);
while(YearMonth.from(localDate).等于(ym){
dates.add(localDate);
//设置下一个循环。
localDate=localDate.plusDays(1);
}
关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,如,& 该项目现已启动,建议迁移到类 要了解更多信息,请参阅.和搜索堆栈溢出以获取许多示例和解释。规范为 从哪里获得java.time类
- 后来
- 内置的
- 标准JavaAPI的一部分,带有捆绑实现
- Java9添加了一些次要功能和修复
- 及
- 大部分java.time功能都在中向后移植到Java6和Java7
-
- 该项目专门为Android采用了ThreeTen Backport(如上所述)
- 看
该项目使用其他类扩展了java.time。该项目是将来可能添加到java.time的一个试验场。您可以在这里找到一些有用的类,例如、、。“注意:我已经计算了一个月包含的天数。”a)您可能做错了。很难做对-有很多规则。b)框架中已经有代码为您执行此操作。为什么要自己写?@Mark Byers:有完整代码的链接吗?“注意:我已经计算了一个月包含的天数。”a)你可能做错了。很难做到正确——有很多规则。b) 框架中已经有代码为您执行此操作。为什么要自己写?@Mark Byers:有完整代码的链接吗?我们在日历实例中设置了什么以及如何继续?你说你有月份和年份。你是这么说的。(参见javadoc)好的,我们正在设置月份和年份,但下一步是什么?我以前没有使用过日历实例。那么有详细的描述吗?我不知道-你想用它做什么:)我们在日历实例中设置了什么以及如何继续?你说你有月份和年份。你是这么说的。(参见javadoc)好的,我们正在设置月份和年份,但下一步是什么?我以前没有使用过日历实例。有详细的描述吗?我不知道-你想用它做什么:)