Java - 公历存储在变量中?

Java - Gregorian Calender Stored in variabe?

我很难尝试将此打印语句更改为变量以与其他变量进行比较。

如果您需要确定两个日期的差异,是否可以将输出存储为变量而不是打印出来?

import java.util.GregorianCalendar;
import java.util.Calendar;

public class Test {

public static void main(String[] args){

int Day = 8;
int Month = 2;
int Year = 1950;

    GregorianCalendar gcal = new GregorianCalendar(Year, Month, Day);

    String month[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; 

    System.out.println(month[gcal.get(Calendar.MONTH)] + " " + gcal.get(Calendar.DATE) + ", " 
            + gcal.get(Calendar.YEAR));}
}

此输出打印: 1950 年 3 月 8 日

要存储为变量,以便与其他日期进行比较,请调用 getTime():

int Day = 8;
int Month = 2;
int Year = 1950;
GregorianCalendar gcal = new GregorianCalendar(Year, Month, Day);
Date date = gcal.getTime();

要将其格式化为 Mar 8, 1950,请使用 SimpleDateFormat:

SimpleDateFormat dateFormat = new SimpleDateFormat("MMM d, yyyy", Locale.US);
String str = dateFormat.format(date);

无需自己命名月份。


但是,如果您使用 Java 8 或更高版本1,您应该使用 LocalDate class instead of GregorianCalendar:

int day = 8;
int month = 3;
int year = 1950;
LocalDate date = LocalDate.of(year, month, day);

请注意,与 GregorianCalendar 不同,month 值是从 1 开始的,因此需要 3 才能得到 Mar

要将其格式化为 Mar 8, 1950,请使用 DateTimeFormatter:

DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("MMM d, uuuu", Locale.US);
String str = date.format(dateFormat);

1) 如果您使用的是 Java 6 或 7,您仍然可以通过添加 ThreeTen-Backport 库来使用 LocalDate