公历Java错误
我无法打印的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 =?]
如何打印它?
您可以使用此类似: -
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)
但是为什么我不能以简单的方式使用它?只需在参考“时间”上打印? – user2540406
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类?
-
Java SE 8,Java SE 9,后来
- 内置。
- 带捆绑实现的标准Java API的一部分。
- Java 9增加了一些次要功能和修复。在ThreeTen-Backport
-
Java SE 6和Java SE 7
- 大部分的java.time功能后移植到Java 6 & 7。
-
Android
- 的ThreeTenABP项目适应ThreeTen-反向移植(上述)为Android特异性。
- 请参阅How to use ThreeTenABP…。
的ThreeTen-Extra项目与其他类扩展java.time。这个项目是未来可能增加java.time的一个试验场。您可以在这里找到一些有用的类,如Interval
,YearWeek
,YearQuarter
和more。
,当你调用
System.out.println(time)
你实际上已经调用日历实例的toString()方法(在这种情况下,一个GregorianCalendar一个)
为了有一个正确格式化的日期,使用SimpleDateFormat的由JavaDoc规定
https://docs.oracle.com/javase/tutorial/i18n/format/simpleDateFormat.html
检查的SimpleDateFormat(见HTTPS ://docs.oracle.com/javase/tutorial/i18n/format/simpleDateFormat.html) – Leo