具體思路:
1、SimpleDateFormat:
是格式和語言環境敏感的方式解析一個類的具體日期。可以格式化(日期→文本),分析(文本→日期),和歸一化。
2、Calendar:
抽象類,爲一個特定的瞬間和一套 calendar fields如 YEAR, MONTH,
DAY_OF_MONTH, HOUR之間的轉換提供了方法,操縱日曆字段,例如獲得下一週的日期。瞬間可以通過,從 Epoch偏移毫秒值表示,1970年1月1日00:00: 0 GMT(陽曆)。
3、ParseException:
可以解析意外到達的一個錯誤的信號。
4、Scanner:
一個簡單的文本掃描程序,可以使用正則表達式解析原始類型和字符串。
一個Scanner打破它的輸入令牌使用分隔符模式,默認匹配空格。由此產生的令牌,然後可以轉換成價值的不同類型使用不同的next方法。
代碼如下:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class BirthDate {
public static void main(String[] args) throws ParseException
{
//創建Scanner
Scanner scanner = new Scanner(System.in);
System.out.println("生日(格式爲yyyy-MM-dd):");
String BirthDate = scanner.nextLine();
//將字符串轉換爲Date類型
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
date = sdf.parse(BirthDate);
//使用calendar進行計算
Calendar calendar = Calendar.getInstance();
//獲取當前時間毫秒值
long now = (new Date()).getTime();
long Birthdate = date.getTime();
long time = now - Birthdate;
int count = 0;
//時間換算
long days = time / 1000 / 60 / 60 / 24;
//判斷閏年
int birthYear = Integer.parseInt((BirthDate.substring(0, 4)));
for (int i = calendar.get(Calendar.YEAR); i >= birthYear; i--)
if ((i % 4 == 0 && !(i % 100 == 0)) || (i % 400 == 0)) {
count++;
}
//加入閏年因素進行整理換算
int age = ((int) days - count) / 365;
System.out.println("到目前爲止,活了" + age + "歲");
}
}