Dans SimpleDateFormat, pourquoi « Y » renvoie-t-il 2012 alors que « y » renvoie 2011 ?
Le comportement que vous avez observé, où « Y » imprime 2012 et 'y' imprime 2011 pour le même objet Date, est dû à la distinction subtile entre le année de la semaine et année civile.
Année de la semaine par rapport à l'année civile
Dans le formatage de la date, « Y » représente l'année de la semaine, qui est alignée sur l'année civile , mais peut parfois être différent en raison de la manière dont les semaines sont calculées. La semaine année commence le dimanche de la première semaine de l'année, et se termine le samedi de la dernière semaine de l'année.
Par contre, 'y' représente l'année civile, qui est la année civile grégorienne traditionnelle qui commence le 1er janvier.
Dans votre exemple, l'objet Date que vous avez utilisé se situe dans la première semaine de 2012 selon le calcul de la semaine et de l'année, mais il tombe dans la dernière semaine de 2011 selon le calcul de l'année civile. Par conséquent, « Y » imprime 2012 (l'année de la semaine) et « y » imprime 2011 (l'année civile).
Pour illustrer davantage ce concept, considérons l'exemple suivant :
System.out.println(new SimpleDateFormat("Y").format(new Date("December 29, 1997"))); // prints 1998 System.out.println(new SimpleDateFormat("y").format(new Date("December 29, 1997"))); // prints 1997
Dans ce cas, « Y » imprime 1998 car la date tombe dans la première semaine de cette semaine-année, même si c'est techniquement la dernière semaine de 1997. Cependant, 'y' imprime 1997 car c'est l'année civile pour la date donnée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!