高能建站系统怎么收费,郑州网站推广公司信息,郑州手机网站建设价格明细表,网页制作价格2023-12-30 文章目录 一周中的第几天方法一#xff1a;模拟思路步骤 方法二#xff1a;调用库函数方法三#xff1a;调用库函数 [1154. 一年中的第几天](https://leetcode.cn/problems/day-of-the-year/)方法一#xff1a;直接计算思路#xff1a; 方法二#xff1a;调用…2023-12-30 文章目录 一周中的第几天方法一模拟思路步骤 方法二调用库函数方法三调用库函数 [1154. 一年中的第几天](https://leetcode.cn/problems/day-of-the-year/)方法一直接计算思路 方法二调用库函数思路 一周中的第几天
提示给出的日期一定是在 1971 到 2100 年之间的有效日期。
方法一模拟
思路 1.可以根据1970年的最后一天周四计算出和输入日期间隔了几天ans之前的年份天数和当前的月份天数和输日的天数 2.求出具体的天数之后进行取模得到具体的星期
步骤
1.定义一个字符串类型的数组大小为7记录星期字典
定义一个int类型的数组大小为12记录12个月份分别对应的天数闰年进行判断
2.定义一个初始天数ans4从周四开始
3.从1971年开始遍历直到输入的年份判断当前年是否为闰年初始值加上对应的天数
4.遍历月份直到输入月份,二月的情况根据是否是闰年来加上额外的一天
5.最后加上输入的天数所求之和取模 static String[] week new String[] {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};//每周对应的星期static int[] nums new int[]{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//每个月对应的天数public String dayOfTheWeek(int day, int month, int year) {int ans 4;//初始值为4从周四开始for (int i 1971; i year; i) {boolean isLeapYear (i % 4 0 i % 100 ! 0) || i % 400 0;//判断是否为闰年ans isLeapYear ? 366 : 365;//是闰年加366,不是加355}for (int i 1; i month; i) {ans nums[i - 1];//之前的月份数之和if (i 2 ((year % 4 0 year% 100 ! 0) || year % 400 0)){ans;//如果当前是闰年单独加1}}ans day;//加上输入的天数return week[ans % 7];//求模返回对应星期}方法二调用库函数
1.使用LocalDate.of(year, month, day)创建了一个LocalDate对象date表示给定的日期。LocalDate是Java 8中新增的日期类用于处理日期相关操作。Java8新增
2.通过调用date.getDayOfWeek()方法获取该日期的星期几信息getDayOfWeek()返回的是一个DayOfWeek枚举类型表示星期几。
3.最后通过调用getDisplayName(TextStyle.FULL_STANDALONE, Locale.ENGLISH)方法将星期几信息以全名的形式返回使用英语的地区设置。
import java.time.LocalDate;
import java.time.format.TextStyle;
import java.util.*;class Solution {public String dayOfTheWeek2(int day, int month, int year) {LocalDate date LocalDate.of(year, month, day);//创建了一个LocalDate对象date表示给定的日期return date.getDayOfWeek().getDisplayName(TextStyle.FULL_STANDALONE, Locale.ENGLISH);//方法获取该日期的星期几信息//将星期几信息以全名的形式返回使用英语的地区设置}方法三调用库函数
1.首先声明了一个私有的静态变量calendar并调用其静态方法getInstance()获取一个默认时区的Calendar实例。然后声明了一个私有的静态变量weekFormat它是一个SimpleDateFormat对象用于格式化星期几信息。
2.使用set(year, month - 1, day)方法将calendar设置为给定日期。由于Calendar中的月份从0开始所以需要将传入的month减去1
3.使用weekFormat.format(calendar.getTime())方法将calendar中的时间格式化为星期几的字符串其中weekFormat是一个SimpleDateFormat对象通过设置格式为EEEE来表示星期几的全名形式 private static final Calendar calendar Calendar.getInstance();
//获取一个默认时区的Calendar实例private static final SimpleDateFormat weekFormat new SimpleDateFormat(EEEE);
//格式化星期几信息public String dayOfTheWeek3(int day, int month, int year) {calendar.set(year, month - 1, day);// 将calendar设置为给定日期return weekFormat.format(calendar.getTime());//calendar中的时间格式化为星期几的字符串}
1154. 一年中的第几天 方法一直接计算
思路
1.根据所给的字符串分别截取出年月日的信息转化成整数
2.根据当前年份判断是否为闰年是闰年二月加1
3.之前月份天数之和最后加上天数的信息 public int dayOfYear(String date) {int year Integer.parseInt(date.substring(0, 4));int month Integer.parseInt(date.substring(5, 7));int day Integer.parseInt(date.substring(8));//调用substring分别截取出年月日的信息转化为整数int[] monthes {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//每个月份的天数if (year % 400 0 || (year % 4 0 year % 100 ! 0)) {monthes[1];}//如果当前的闰年二月加1天直接改变月份字典中的数int ans 0;for (int i 0; i month - 1; i) {ans monthes[i];//每个月天数之和}return ans day;}方法二调用库函数
思路
1.指定日期字符串的格式
2.解析为 LocalDate 对象
3.返回该日期在其所属年份中的天数 private static final DateTimeFormatter formatter DateTimeFormatter.ofPattern(yyyy-MM-dd);
//定义了一个 DateTimeFormatter 对象它指定了日期字符串的格式为 yyyy-MM-ddpublic int dayOfYear2(String date) {return LocalDate.parse(date, formatter).getDayOfYear();//LocalDate.parse() 方法将日期字符串解析为 LocalDate 对象//getDayOfYear() 方法则返回该日期在其所属年份中的天数}点击移步博客主页欢迎光临~