java算法_日期类方法及例题(生日日期)

日期类函数


Date()类
常用方法:Date getTime() 获取当前对象距离某日期的毫秒数
Date setTime(long time)用于设置当前对象的时间为参数指定的毫秒数,距离标准时间

SimpleDate函数
通常使用format()方法将日期转换为字符串,yyyy表示年,MM表示月,dd表示日期,HH表示小时,mm分钟,ss表示秒,也可以使用parse()方法将字符串转换为日期

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
//将某日日期转化为字符串
String str = simpleDateFormat.format(xx);

Calendar类:
常用方法:
Date getTime() 用于将Calendar类型转换为Date类型并返回
static Calendar getInstance():用户获取当前类的引用,不仅能获取当前的时间,还能指定需要获取的时间点
void set(int year,int month,int date,int hourOfDay,int minute,iint second) 根据参数设置年月日,Calendar.DATE是个常量,就是个固定值,永远不变。

例题:生日日期★★

题目描述
CCC老师的生日是YY年MM月DD日,他想知道自己出生后第一万天纪念日的日期(出生日算第0天)。

输入
输入有多行,格式为YY MM DD 其中1949<=YY<=2006,日期绝对合法。

输出
输出有多行。即CCC老师生日第一万天以后的日期,格式为 “Y-M-D”。

样例输入 1979 4 16 样例输出 2006-9-1

思路:输入给定日期(字符串),有目标天数(10000天),求纪念日期,如果通过分析年月日来计算天数的话,做起来非常麻烦,使用java自带的Date()函数 和 Calendar 类中的方法,很容易就可以解决问题。
首先需要明白的是,我们输入的年月日是字符串,而要通过使用Calendar类中的add()方法,所以需要先声明日期格式,再把输入的数据转换为日期类型,再调用Calendar类中的方法求得现在的时间和10000天以后的纪念时间,日期格式不能被输出,所以需要再把我们求得的纪念日期转换为字符串,最后输出即可

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class fourth {
    public static void main(String[] args) throws ParseException {
        //image
        //创建日期格式
        SimpleDateFormat s1= new SimpleDateFormat("yyyy-MM-dd");
        Scanner s = new Scanner(System.in);
        while(s.hasNext()){
            //输入字符串日期
            int year = s.nextInt();
            int month = s.nextInt();
            int day = s.nextInt();
            //然后将输入的字符串转换为日期格式
            Date date =s1.parse(year+"-"+month+"-"+day);
            //创建Calendar 获取当前的时间
            Calendar now = Calendar.getInstance();
            //设置当前的时间 设置成date
            now.setTime(date);
            //然后给当前时间增加目标天数
            now.add(Calendar.DATE,10000);
            Date date1 = now.getTime();
            String str1 = s1.format(date1);
            String a[] = str1.split("-");
            year= Integer.parseInt(a[0]);
            month =Integer.parseInt(a[1]);
            day=Integer.parseInt(a[2]);
            System.out.println(year+"-"+month+"-"+day);
        }
    }
}
  • 0
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:黑客帝国 设计师:我叫白小胖 返回首页
评论

打赏作者

对风诉语

感谢支持

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值