公历日历java错误

我无法打印GregorianCalendar

    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 =假,宽松= TRUE,区= 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,一个endDayOfWeek = 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,HOUR = 0,HOUR_OF_DAY = 0,MINUTE = 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)

你打电话时

System.out.println(time)

你实际上调用了Calendar实例的toString()方法(在这种情况下是GregorianCalendar)

为了获得格式正确的日期,请按照Javadoc中的说明使用SimpleDateFormat

https://docs.oracle.com/javase/tutorial/i18n/format/simpleDateFormat.html


java.time

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

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

ld.toString():1999-02-02

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

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

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

mardi 2février1999


关于java.time

java.time框架内置于Java 8及更高版本中。 这些类取代了诸如java.util.DateCalendarSimpleDateFormat等麻烦的旧式遗留日期时间类。

现在处于维护模式的Joda-Time项目建议迁移到java.time类。

要了解更多信息,请参阅Oracle教程。 并搜索堆栈溢出了很多例子和解释。 规范是JSR 310。

何处获取java.time类?

  • Java SE 8Java SE 9和更高版本
  • 内置。
  • 带有捆绑实现的标准Java API的一部分。
  • Java 9增加了一些次要功能和修复。
  • Java SE 6Java SE 7
  • 大部分java.time功能都在ThreeTen-Backport中移植到Java 6和7。
  • Android的
  • ThreeTenABP项目专门针对Android采用了ThreeTen-Backport(上文提到)。
  • 请参阅如何使用ThreeTenABP ...。
  • ThreeTen-Extra项目将java.time扩展到其他类。 这个项目是未来可能增加java.time的一个试验场。 您可以在这里找到一些有用的课程,例如IntervalYearWeekYearQuarter等。

    链接地址: http://www.djcxy.com/p/3095.html

    上一篇: gregorian calendar java error

    下一篇: Calendar get year returns wrong result