目录
题目描述
给你一个字符串
date
,按YYYY-MM-DD
格式表示一个现行公元纪年法日期。返回该日期是当年的第几天。
输入输出格式
输入格式
输入一个字符串
date
,按YYYY-MM-DD
格式表示一个现行公元纪年法日期。
输出格式
输出一个整数,表示该日期是当年的第几天。
输入输出样例1
输入
2019-01-09
输出
9
解释(可选)
给定日期是 2019
年的第九天。
输入输出样例2
输入
2019-02-10
输出
41
说明提示
date
表示的范围从 1900
年 1
月 1
日至 2019
年 12
月 31
日。
参考代码
方法一
import java.util.Scanner;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class DayofYear{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
try{
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate date=LocalDate.parse(input,dtf);
int day = date.getDayOfYear();
System.out.println(day);
}catch (Exception e) {
System.out.println("输入的日期格式不正确,请按照\"YYYY-MM-DD\"的格式重新输入。");
}
}
}
方法二
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String date = sc.next();
String[] ymd = date.split("-");//滤除"-"
int year = Integer.parseInt(ymd[0]);//保存年月日
int month = Integer.parseInt(ymd[1]);
int day = Integer.parseInt(ymd[2]);
int[] amount = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} ;//平年月数
if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)){
amount[1] += 1;//如果是闰年,则2月+1天
}
int days = 0;
for(int n = 0;n < month - 1;n++){
days += amount[n];//天数累加
}
System.out.println(days+day);
}
}