java.text包提供了一类命名的SimpleDateFormat其用于格式化和分析的日期在所需方式(本地)。
使用此类的方法,您可以将String解析为Date或将Date格式化为String。
您可以使用parse()
SimpleDateFormat类的方法解析给定的String to Date对象。对于此方法,您需要以字符串格式传递日期。解析String to Date对象-
通过将所需的日期格式的String格式传递给其构造函数来实例化SimpleDateFormat类。
//实例化SimpleDateFormat类 SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
通过将parse()方法作为参数传递,将其解析/转换为Date对象。
Date date = formatter.parse(dob); System.out.println("Date object value: "+date);
以下Java程序以String格式从用户那里接收姓名的生日,将获取的生日String转换/解析为Date对象,然后计算当前年龄并显示结果。
import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.Instant; import java.time.LocalDate; import java.time.Period; import java.time.ZoneId; import java.time.ZonedDateTime; import java.util.Date; import java.util.Scanner; public class CalculatingAge { public static Date StringToDate(String dob) throws ParseException{ //实例化SimpleDateFormat类 SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy"); //将给定的String解析为Date对象 Date date = formatter.parse(dob); System.out.println("Date object value: "+date); return date; } public static void main(String args[]) throws ParseException { //从用户读取姓名和出生日期 Scanner sc = new Scanner(System.in); System.out.println("Enter your name: "); String name = sc.next(); System.out.println("Enter your date of birth (dd-MM-yyyy): "); String dob = sc.next(); //将字符串转换为日期 Date date = CalculatingAge.StringToDate(dob); //将获取的Date对象转换为LocalDate对象 Instant instant = date.toInstant(); ZonedDateTime zone = instant.atZone(ZoneId.systemDefault()); LocalDate givenDate = zone.toLocalDate(); //计算给定日期与当前日期之间的差。 Period period = Period.between(givenDate, LocalDate.now()); System.out.print("Hello "+name+" your current age is: "); System.out.print(period.getYears()+" years "+period.getMonths()+" and "+period.getDays()+" days"); } }
输出结果
Enter your name: Krishna Enter your date of birth (dd-MM-yyyy): 26-09-1989 Date object value: Tue Sep 26 00:00:00 IST 1989 Hello Krishna your current age is: 29 years 8 and 5 days