给个日期便能求出是一年中的第几天的详注代码

本文介绍了一种使用Java编程语言的方法来计算给定日期是该年的第几天。通过正则表达式验证日期格式,并根据月份累加天数,特别处理了二月的天数以考虑是否为闰年。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package org.example;

import java.text.MessageFormat;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class test2 {
    public static void main(String[] args) {
    String date="2019-07-13";  //给定日期
    String regex="(\\d{4})-(\\d{1,2})-(\\d{2})";        //正则匹配规定日期格式
    if (date.matches(regex)){ //当匹配成功时
        Matcher matcher = Pattern.compile(regex).matcher(date);
        matcher.find();  //这里为空跑,只会返回一个布尔值
        int year = Integer.parseInt(matcher.group(1));   //提取年月日
        int month = Integer.parseInt(matcher.group(2));
        int day = Integer.parseInt(matcher.group(3));
        int total = day;
        for (int i=1;i<month;i++){   //开始匹配大小月
            int d=31;    //默认为大月31天
            switch (i){
                case 4:case 6:case 9:case 11:      //小月时天数为30天
                    d=30;
                    break;
                case 2:      //二月特殊,计算出是否为闰年来判断二月有几天
                    d = year%4==0 && year%100!=0 || year%400==0 ? 29:28;
                    break;
            }
            total+=d;    //算出总天数
        }
        System.out.println(MessageFormat.format("{0}是{1}的第{2}天",date,year,total));   //对应输出

        }else{
            System.out.println("非法日期");    //当格式不符合时返回值
        }
    }
}

如有不足,欢迎指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值