Day11 蓝桥杯+Java中LocalDate类——关于日期跳转题【2015省赛星系炸弹】(相比C++,Java的LocalDate是真的香!!!)

今天刷蓝桥杯的题,用C++AC了之后,发现解析里有兄弟用Java的LocalDate类做的,步骤极其简洁,【由于寒假开始学过一点Java】所以我特意去搜了搜LocalDate类,发现解这种题真的很好使!!!废话少说,上题干!

1. 题目描述

在 X 星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。 每个炸弹都可以设定多少天之后爆炸。比如:阿尔法炸弹 2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。有一个贝塔炸弹,2014年11月9日放置,定时为1000天。请你计算它爆炸的准确日期。请输出该日期,格式为yyyy-mm-dd,即 4 位年份 2 位月份 2 位日期。比如:2015-02-19。

2. 运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

3. C++输出版本

#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int mons[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int year,mon,day;
int main()
{
  int num;
  cin >> year >> mon >> day >> num;
  year=2014,mon=11,day=9,num=1000; //本题已给出具体日期,咱们可以直接对其赋值即可,如果需要输入日期和跳转的天数,则将其删去即可。
  while(num--){
    day++;
    if(day > mons[mon]){
      mon++;
      day=1;
    }
    if(mon > 12){
      mon=1;
      year++; 
     if(year%400==0||(year%4==0&&year%100!=0))
        mons[2]=29;
      else
        mons[2]=28;
    }
  }
  cout << year << "-" << mon/10 << mon << "-" << day/10 << day;
  return 0;
}

在这里插入图片描述

4. Java输出版本

import java.time.LocalDate;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        LocalDate date = LocalDate.of(2014, 11, 9).plusDays(1000);
        System.out.println(date);
    }
}

在这里插入图片描述

5. Java中的LocalDate

5.1 介绍

Java中专门提供了一个java.time的"时间包",其中包括Date类,LocalDate类,LocalTime类,LocalDateTime类等。而本文要讲的LocalDate类是Java8的新特性,是通过日历法表示日期,即想要指定年月日可以用这个。

5.2 特点

  • 不需要构造器来构造LocalDate类的对象,应当使用静态工厂方法。
  • 是一个线程安全的类,用final修饰,主要对日期进行操作

5.3 使用

① 获取当前日期

   LocalDate localDate = LocalDate.now();

在这里插入图片描述

② 获取特定时间

   LocalDate localDate = LocalDate.of(2023,05,20);

在这里插入图片描述

③ 读取年、月、日

  int year = localDate.getYear();   
  Month month = localDate.getMonth();  
  int mon = month.getValue(); 
  int day = localDate.getDayOfMonth();

在这里插入图片描述

④ 日期跳转(puls、minus方法)

Java中给定两种方法,一种向该日期之前跳转n天,另一种我不用说了叭😉没错,向后跳转n天,返回值正是跳转的日期。【这就非常nice哇,我们不需要考虑平闰年、月份天数……等各种事啦】

直接.上方法即可

 LocalDate localDate1 = LocalDate.of(2023,05,20).plusDays(1000); //向后跳转1000天
 LocalDate localDate2 = LocalDate.of(2023,05,20).minusDays(1000); //向前跳转1000天

在这里插入图片描述

5.4 更多

更多的内容CSDN上有大佬已经整理出来啦,非常不错的,点这里直达👉👉👉java中LocalDate使用总结

5. 感谢大家支持!

  • 16
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 21
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卫冕711

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值