重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
以下是Java代码,用于计算中国时间2023年3月8日离当月月底还有多少天:
为阜宁等地区用户提供了全套网页设计制作服务,及阜宁网站建设行业解决方案。主营业务为成都网站建设、网站制作、阜宁网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
```java
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
public class DaysToMonthEnd {
public static void main(String[] args) {
LocalDate today = LocalDate.now(ZoneId.of("Asia/Shanghai"));
LocalDate endOfMonth = today.withDayOfMonth(today.lengthOfMonth());
long daysToMonthEnd = ChronoUnit.DAYS.between(today, endOfMonth);
System.out.println("Days to Month End: " + daysToMonthEnd);
}
}
```
首先,使用 `LocalDate.now(ZoneId.of("Asia/Shanghai"))` 获取当前日期。这里以亚洲/上海时区为例。然后,使用 `withDayOfMonth` 方法获取当月的最后一天。接下来,利用 `ChronoUnit.DAYS.between` 方法计算当前时间和当月月底之间的天数差异。最后,将结果打印到控制台。
在本例中,输出结果为:23。即距离2023年3月31日(当月月底)还有23天。
这个题目的逻辑比较简单,先用数组记录出一年12个月每个月的天数,其中2月记录为28天,在判断当年是否是闰年,如果是闰年,将2月天数记录为29天,然后输入,例如数组month,输出month[m - 1],这就是这个月的天数了。
楼上正解,不过楼主问出这个问题可能也是初学者,我就提供一下用简单语法的代码吧
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入年份");
int year= scan.nextInt();//得到需求年份
System.out.println("请输入月份");
int month=scan.nextInt();//得到需求月份
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println(year+"年"+month+"月的天数为:"+31);
break;
case 4:
case 6:
case 9:
case 11:
System.out.println(year+"年"+month+"月的天数为:"+30);
case 2:
if((year%400)==0 || ((year%4)==0)((year%100)!=0)){
System.out.println(year+"年2月的天数为:"+29);
}else{
System.out.println(year+"年2月的天数为:"+28);
}
}
}
按照你的要求,如何得到一个月有多少天,这里并没有说是什么年份,所以默认当年(不同年份的月份天数可能不一样,例如闰年的二月)
因此问题变为
输入条件:指定某一个月
输出结果:当年这个月份的天数
思路:在Java8里新的时间API里,月份已经被抽象成了枚举Month,所以可以把输入条件定义为枚举类型的Month,然后获取当前时间X,把时间X的月份修改为输入条件的月份,此时时间X变为X1,根据本身提供的方法lengthOfMonth就可以直接得到X1所在当月的天数了
代码:(请将JDK升到8)
public static void main(String[] args) {
System.out.println(countDaysInMonth(Month.MAY));
}
public static int countDaysInMonth(Month month){
// 获取当前时间
LocalDate now = LocalDate.now();
System.out.println(now);
// 把当前时间的月份修改为输入的月份
LocalDate thisMonthDate = now.withMonth(month.getValue());
System.out.println(thisMonthDate);
return thisMonthDate.lengthOfMonth();
}
也可以连着写,更美观点
public static int countDaysInMonth(Month month){
return LocalDate.now()
.withMonth(month.getValue())
.lengthOfMonth();
}
非常直观且易懂好用,在Java8里with就代表着修改意思,withMonth那就是修改月份,所以整个代码读下来就变成
获取当前时间A
修改A的月份为输入条件得到时间B
计算B所在月的天数