使用 Calendar.getInstance() vs new GregorianCalendar() 获取当前日期时间

2022-09-01 00:56:23

使用获取日期时间之间可能有什么区别

Calendar.getInstance()

new GregorianCalendar()

?


答案 1

Calendar.getInstance() 的源代码中查找:

private static Calendar createCalendar(TimeZone zone, Locale aLocale) {
    // If the specified locale is a Thai locale, returns a BuddhistCalendar
    // instance.
    if ("th".equals(aLocale.getLanguage())
        && ("TH".equals(aLocale.getCountry()))) {
        return new sun.util.BuddhistCalendar(zone, aLocale);
    } else if ("JP".equals(aLocale.getVariant())
        && "JP".equals(aLocale.getCountry())
        && "ja".equals(aLocale.getLanguage())) {
        return new JapaneseImperialCalendar(zone, aLocale);
    }       

    // else create the default calendar
    return new GregorianCalendar(zone, aLocale);    
}

因此将返回基于您的默认值和 .getInstance()CalendarLocaleTimeZone


答案 2

Calendar.getInstance() 将为您提供使用默认时区和区域设置,这可能会导致 、 a 或 .CalendarGregorianCalendarBuddhistCalendarJapaneseImperialCalendar

GregorianCalendar总会给你一个公历。


推荐