如下是一个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+"年。"); }}