date日期相减 java_一个小小的Java程序

如下是一个Java程序实现了从键盘读入出生日期并计算从出生开始过去了多少天/多少周/多少月/多少日。

具体的全部解决思路以及代码。还有代码对应的相关解释已标注与代码中。

如果发现有所问题,还望斧正。

import java.text.*;import java.util.*;//键盘输入某人的出生日在期,计算从出生开始到现,经过了多少天?多少周?多少年?/* *设计思路: *1、String输入生日 *2、拆字符串,拆成年月日 *3、年和自动获取的年减 *4、重新合成Date类型的日期,获取毫秒 *5、自动获取当前日期的毫秒数和生日相减 *6、通过12减去出生月计算出生该年的剩余月,然后加上该年已经过去的月,加上(年纪-1)*12月 */public class T {    public static void main(String[] arg){        //throws ParseException {向上一层抛出异常,方法声明中使用关键字上抛异常        String birthday;//定义一个字符类型的变量birthday用于储存输入的生日信息        int year = 0 ;//出生了多少年        long month = 0;//出生了多少月        long week = 0; //出生了多少周        long day = 0;//出生了多少天        long ms;//出生多少毫秒        Scanner scanner = new Scanner(System.in);//输入语句        System.out.println("请输入您的生日(格式为YYYY-MM-DD):");        birthday = scanner.nextLine();//读入日期(String类型)        String s1[]=birthday.split("-");//按一定的条件拆分字符串,s1[0]年;s1[1]月;s1[2]日        int birthday_year=Integer.parseInt(s1[0]);//从字符串中读取出生年        Calendar cal = Calendar.getInstance();//创建一个Calendar 对象        int now_year = cal.get(Calendar.YEAR);//获取当前年份        year = now_year -birthday_year;//运算过了几年        Date birthday_date = new Date();//创建一个生日日期的对象        int birthday_month = Integer.parseInt(s1[1]);        int now_month = cal.get(Calendar.MONTH);//自动获取当前月份        System.out.println(now_month);        month = (12-birthday_month)+ ((year-1)*12)+(now_month+1);//计算经过了几个月(月份+1因为Java中月的从0开始计数)        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//创建一个对象用于接下来转换的格式        try {            birthday_date = sdf.parse(birthday);//将字符型的生日转化成日期型        } catch (ParseException e) {//收集可能存在的问题并输出            e.printStackTrace();        }        //System.out.println("birthday:"+birthday_date);//输出生日        long birthday_time = birthday_date.getTime();        //System.out.println(birthday_time);//输出生日毫秒        Date date = new Date();//新建一个date对象        long today_time = date.getTime();        //System.out.println(today_time);//输出当前毫秒        ms =today_time - birthday_time;//计算差值毫秒        //System.out.println("差值毫秒"+ms);//差值毫秒        day =  ms/1000/60/60/24;//计算差值天数        //System.out.println("您已存活:"+day+"天");        week = day/7;//计算差值周数        //System.out.println("您已存活:"+week+"周");        System.out.println("您已经存活"+day+"天,"+week+"周,"+month+"月,"+year+"年。");    }}

3fc115e810a84ba29d109989f41ac4ee.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值