Java解决一年中的第几天

Java解决一年中的第几天

01 题目

  • 给你一个字符串 date ,按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。返回该日期是当年的第几天。

    示例 1:

    复制代码
    输入:date = "2019-01-09"
    输出:9
    解释:给定日期是2019年的第九天。

    示例 2:

    复制代码
    输入:date = "2019-02-10"
    输出:41

    提示:

    • date.length == 10
    • date[4] == date[7] == '-',其他的 date[i] 都是数字
    • date 表示的范围从 1900 年 1 月 1 日至 2019 年 12 月 31 日

02 知识点

  • 时间戳
  • 日历类,时间格式类

03 我的题解思路

java 复制代码
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class dayOfYear {
	public static void main(String[] args) {
//		测试数据
		System.out.println(dayOfYear("2019-02-10"));
	}
	 public static int dayOfYear(String date) {
		 int rs=0;//返回值
		 DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");//设置时间格式
		 Long end=0l;//输入值的时间戳
		 Long start=0l;//当年第一天的时间戳
		//切割字符串并取年份拼接出当年第一天的字符串
		 String dateSt=date.split("-")[0]+"-01-01";
		 try {
			//parse方法必须捕获(try-catch)异常,该方法把符合格式的字符串转为日期类
			Date dateE=dateFormat.parse(date);
			Date dateS=dateFormat.parse(dateSt);
			start=dateS.getTime();//从日期类中取时间戳
			end=dateE.getTime();
		} catch (ParseException e) {
			e.printStackTrace();
		}
//		 时间戳相减获得二者时间差的毫秒数,将毫秒数转为天数并加一,再将long类型转回int类型
		return Math.toIntExact((end-start)/1000/60/60/24+1);
	    }
	
}
相关推荐
DevOpenClub2 小时前
职教高考控制线 API:招生类别枚举、筛选与空分数含义
java·数据库·高考
心祭丫丫2 小时前
【每天一个 Python 小案例17】Python 实现通讯录
开发语言·人工智能·笔记·python·学习
露天赏雪3 小时前
第3篇:Sentinel熔断降级实战:大模型接口抖动时的服务兜底方案
java·开发语言·人工智能·spring boot·spring·servlet·sentinel
天天被压力3 小时前
【A股分钟级高频数据完全手册 #06】北交所分钟级数据接口:京市股票Pro版最新分时
java·人工智能·python
天天被压力3 小时前
【A股分钟级高频数据完全手册 #05】指数历史分钟数据接口:Pro版沪深指数分时回放
java·人工智能·python
captain3763 小时前
▲统一功能——DispatcherServlet源码分析
java·spring·java-ee·log4j·maven
金銀銅鐵3 小时前
JDK 21 中 List.of 的实现细节:从 List12 到 ListN
java·后端·ai编程
yeccheng5 小时前
MySQL 索引超详解:从底层 B+ 树到面试高频考点
java·开发语言·jvm·mysql·面试
联犀5 小时前
纯 Go 的 CAD 开源库 go-cad:直接解析 DWG/DXF,现在也能导出 PDF
开发语言·golang·pdf
这个昵称不容易5 小时前
SpringBoot 读书笔记共享平台部署实战:97 个 Java 文件 / 113 个接口 / 10 张表
java·springboot·毕设