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

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

文章目录

  • 1. 题目描述
  • 2. 运行限制
  • 3. C++输出版本
  • 4. Java输出版本
  • 5. `Java`中的`LocalDate`类
    • 5.1 介绍
    • 5.2 特点
    • 5.3 使用
      • ① 获取当前日期
      • ② 获取特定时间
      • ③ 读取年、月、日
      • ④ 日期跳转(puls、minus方法)
    • 5.4 更多
  • 5. 感谢大家支持!

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 
#include
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;
}

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

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);
    }
}

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

5. Java中的LocalDate

5.1 介绍

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

5.2 特点

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

5.3 使用

① 获取当前日期

   LocalDate localDate = LocalDate.now();

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

② 获取特定时间

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

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

③ 读取年、月、日

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

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

④ 日期跳转(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天

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

5.4 更多

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

5. 感谢大家支持!

你可能感兴趣的:(蓝桥杯试题,#Java,蓝桥杯,java,c++,数据结构,开发语言)