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

Oh *_*oon 42 java calendar gregorian-calendar

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

Calendar.getInstance()

VS

new GregorianCalendar()

use*_*421 49

查看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);    
}
Run Code Online (Sandbox Code Playgroud)

所以getInstance()会返回一个Calendar基于默认LocaleTimeZone.

  • 值得注意的是Android的实现与此不同,至少在API-22中 - "public static synchronized Calendar getInstance(){return new GregorianCalendar(); }` (7认同)

Joã*_*lva 32

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

GregorianCalendar 永远都会给你一个格里高利历.