J'ai une colonne de date dans une famille de colonnes Cassandra. Lorsque je récupérerai les données de ce CF à l'aide de DataStax Java API, cet objet de date peut être pris sous forme d'un Il a une méthode AS de JDK version 1.1, remplacée par calendar.get (calendrier.year) - 1900. P>
blockQuote>
Comment puis-je obtenir l'année, le mois, les attributs de jour de cette date d'objet correctement? P> java.util.date code> objet. P>
getyear () code> mais il est obsolète. Le Javadoc correspondant dit: P>
4 Réponses :
Une bonne option consiste à utiliser le format de date comme suit:
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy"); Date date = sdf1.parse(datetime); String year = sdf2.format(date);
Pas besoin d'utiliser SimpleDateformat code>.
Calendrier # Obtenir CODE> va bien et plus rapide.
Pourriez-vous essayer comme TIHS;
// create a calendar Calendar cal = Calendar.getInstance(); cal.setTime(datetime); //use java.util.Date object as arguement // get the value of all the calendar date fields. System.out.println("Calendar's Year: " + cal.get(Calendar.YEAR)); System.out.println("Calendar's Month: " + cal.get(Calendar.MONTH)); System.out.println("Calendar's Day: " + cal.get(Calendar.DATE));
Vous devez définir la date avant d'obtenir l'année: cal.settime (YourDateObjectFromCassandra); code> alors vous pouvez faire
cal.get (calendar.year); code>
@Narmer: Non, calendar.getinstance () code> par défaut à la date / heure actuelle.
@Jonskeet Yep, mais l'OP veut l'année de l'objet Cassandra, pas l'année en cours
@Narmer: Droite, oui - pour ce cas, je vois votre point. Il convient également de noter que calendrier code> sera par défaut sur le fuseau horaire du système; Ce n'est pas clair à quel moment le fuseau horaire souhaite.
Vous avez raison @narmer, j'ai répondu en fonction de l'en-tête de la question.
@Semiheker merci, toujours le problème des paramètres régionaux n'est pas résolu. Vous devriez mentionner que vous pouvez initialiser votre locale via calendar.getinstance (locale.your_country); code>. Je ne pense pas que ce soit nécessaire depuis qu'il veut l'année, mais son droit de mentionner.
Oh, la même chose s'applique au fuseau horaire!
Cela fonctionne bien, mais pour les dattes comme 2014-01-05 00: 08: 00 + 0530, je reçois un mois de 0, quelle est la raison de cela?
Parce que les mois commencent à partir de 0. janvier = 0, février = 1 etc.
@Chamilawijayarathna janvier est 0
Pour récupérer les champs de date et heure, vous pouvez utiliser ce code:
DateFormat.getDateTimeInstance().getCalendar().get(DateFormat.MONTH_FIELD)
Utilisez l'objet localDate dans Java8
Date date = new Date(); LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); int year = localDate.getYear(); int month = localDate.getMonthValue(); int day = localDate.getDayOfMonth();
Si vous obtenez la valeur comme un
java.util.date code>, quel fuseau horaire voulez-vous utiliser pour l'année? Une date
code> est juste un point à temps.
Dupliqué possible de Obtenez une valeur entière de l'année en cours en Java a>