2017-05-06 68 views
0

我无法打印的GregorianCalendar公历Java错误

package Tests; 

import java.util.Date; 
import java.util.GregorianCalendar; 

public class Data 
{ 

    public static void main(String[] args) 
    { 
     GregorianCalendar time = new GregorianCalendar(1999, 2, 2); 
     System.out.println(time); 
    } 

} 

我收到此

java.util.GregorianCalendar中的[时间= ?, areFieldsSet =假,areAllFieldsSet =假,宽松=真,区= sun.util.calendar.ZoneInfo [ID = “欧洲/贝尔格莱德”,偏移= 3600000,dstSavings = 3600000,useDaylight =真,过渡= 119,lastRule = java.util.SimpleTimeZone中[ID =欧洲/贝尔格莱德,偏移= 3600000,dstSavings = 3600000,useDaylight =真,startYear = 0,STARTMODE = 2,startMonth = 2,朝九特派= -1,startDayOfWeek = 1,开始时间= 3600000,startTimeMode = 2,endMode = 2,endMonth = 9,endday指定= -1,endD ayOfWeek = 1,结束时间= 3600000,endTimeMode = 2]],Firstdayofweek可= 2,minimalDaysInFirstWeek = 4,ERA = ?, YEAR = 1999,MONTH = 2,WEEK_OF_YEAR = ?, WEEK_OF_MONTH = ?, DAY_OF_MONTH = 2,DAY_OF_YEAR = ?, DAY_OF_WEEK = ?, DAY_OF_WEEK_IN_MONTH = ?, AM_PM = 0,小时= 0,HOUR_OF_DAY = 0,分= 0,SECOND = 0,多段微差= ?, ZONE_OFFSET = ?, DST_OFFSET =?]

如何打印它?

+0

检查的SimpleDateFormat(见HTTPS ://docs.oracle.com/javase/tutorial/i18n/format/simpleDateFormat.html) – Leo

回答

0

您可以使用此类似: -

GregorianCalendar calendar = new GregorianCalendar(); 
Date now = calendar.getTime(); 
System.out.println(now); 

Calendar cal2 = new GregorianCalendar(2010, 9, 26); // allocate with the specified date 
cal2.get(Calendar.DAY_OF_WEEK);      // 1 (Sunday) to 7 (Saturday) 
+0

但是为什么我不能以简单的方式使用它?只需在参考“时间”上打印? – user2540406

0

java.time

现代化的解决方案使用LocalDate类代替。避免GregorianCalendar,因为它现在已经过时。

LocalDate ld = LocalDate.of(1999 , Month.FEBRUARY , 2) ; 

ld.toString():1999年2月2日

toString的方法使用标准的ISO 8601种格式。对于其他格式,请使用DateTimeFormatter类。搜索堆栈溢出了解更多示例和讨论,这已经被多次讨论。

通常最好让DateTimeFormatter自动为你本地化。

Locale locale = Locale.CANADA_FRENCH ; 
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL).withLocale(locale) ; 
String output = ld.format(f) ; 

狂欢2 FEVRIER 1999年


关于java.time

java.time框架是建立在Java 8和更高版本。这些类取代了日期时间类legacy,如java.util.Date,Calendar,& SimpleDateFormat

Joda-Time项目现在位于maintenance mode,建议迁移到java.time类。请参阅Oracle Tutorial。并搜索堆栈溢出了很多例子和解释。规格是JSR 310

从何处获取java.time类?

ThreeTen-Extra项目与其他类扩展java.time。这个项目是未来可能增加java.time的一个试验场。您可以在这里找到一些有用的类,如Interval,YearWeek,YearQuartermore