Joda Time: Premier jour de la semaine?
Comment obtenez-vous le premier jour de la semaine donné un Paramètres régionaux à l'aide de Joda-Time?
Point: la Plupart des pays utilisent le standard international lundi comme premier jour de la semaine (!). Un tas d'autres utilisent le dimanche (notamment les etats-unis). D'autres, apparemment, samedi. Certains apparemment mercredi?!
Wikipedia "Sept jours de la semaine"#Week_number
- Lire ma question encore une fois, s'il vous plaît. Je crois que j'ai effectivement conduit au point de départ assez dur qu'il serait tout simplement impossible de mal pour la question deux, vous venez avec. Étonnamment, je me suis trompé. Voilà encore une fois: Certaines langues (c'est à dire etats-unis), utilisez le dimanche comme premier jour de la semaine. D'autres utilisent les normes ISO lundi comme premier jour de la semaine. Comment puis-je la requête Joda Temps pour cela? Avec Java, il est trés facile: java.sun.com/javase/6/docs/api/java/util/... Donc: Calendrier.getInstance(paramètres Régionaux.NOUS).getFirstDayOfWeek(). Avec Joda?
- Pourquoi ne pas simplement utiliser le Calendrier.getInstance(paramètres Régionaux.NOUS).getFirstDayOfWeek()?
- Parce que si je veux utiliser Joda Temps, je veux l'utiliser "a", de ne pas mélanger deux choses complètement différentes bibliothèques.
- Je pense que Joda Temps doit être utilisé avec le Standard Java libs, comme Calendrier. La page d'Accueil dit "... Joda-Temps est livré avec out-of-the-box JDK l'interopérabilité.".
- Oui, cette déclaration signifie que vous pouvez facilement revenir en arrière et vient entre eux. Il n'a pas, AFAICT, dire qu'il faut les mélanger entre eux. Pour moi, il me semble que je peut tout faire avec Joda, pures, à l'exception de trouver le premier jour de la semaine!
- Calendrier.getFirstDayOfWeek() retournera un nombre différent de Joda est DateTimeConstants. Par exemple, le Calendrier.DIMANCHE==1 US (par défaut), alors que DateTimeConstants.DIMANCHE==7 (ISO).
Vous devez vous connecter pour publier un commentaire.
Joda-Time utilise la norme ISO lundi à dimanche de la semaine.
Il n'a pas la capacité d'obtenir du premier jour de la semaine, ni de retourner le jour de la semaine, l'indice est basé sur un autre jour que le standard lundi. Finalement, les semaines sont toujours calculés par rapport aux règles de l'ISO.
LocalDate.now().withDayOfWeek(DateTimeConstants.MONDAY)
, mais cela ne fonctionnera pas si vous avez réellement besoin d'un dimanche à la place. Vous avez pour vérifier si il est déjà dimanche, et si non, allez à dimanche et une semaine en arrière. Elle le suce. Toutefois, notez que Java calendrier suce ainsi; pire encore, il vous permet de croire qu'il fonctionne bien qu'il ne l'est pas, voir stackoverflow.com/a/7499264/505775Il n'y a aucune raison que vous ne pouvez pas faire usage de la JDK au moins de trouver le "coutumier début de la semaine" pour la donnée Locale. La seule partie délicate est la traduction de constantes pour les jours de semaine, où les deux sont de 1 à 7, mais java.util.Le calendrier est décalé par one, avec le Calendrier.LUNDI = 2 vs DateTimeConstants.LUNDI = 1.
De toute façon, l'utilisation de cette fonction:
Ajouter des paramètres Régionaux de Calendrier.getInstance() pour obtenir un résultat de certains paramètres Régionaux autres que celui par défaut.
Ici est de savoir comment on peut contourner Joda de temps pour obtenir les états-UNIS premier jour de la semaine:
Ou en Scala
Semble que vous êtes hors de la chance, il ressemble à tous les fournis Chronologies hériter de la mise en œuvre de baseChronology, qui prend uniquement en charge la norme ISO définitions,
c'est à dire lundi=1 ... dimanche=7.
Vous devez définir votre propre LocaleChronology, probablement calqué sur StrictChronology ou LenientChronology, ajouter une méthode de fabrique:
et remplacer la mise en œuvre de
avec une ré-implémentation de java.util.Calendrier.setWeekCountData(Locale desiredLocale) qui repose sur le soleil.util.les ressources.LocaleData..getCalendarData(desiredLocale).
Si votre question est de savoir comment obtenir les DayOfWeek à partir d'un Joda objet DateTime? Que dire de ce:
J'ai utilisé le suivant stub dans
Scala
pour obtenir des premier et dernier jours de la semaine à partir deJoda
DateTime
Note: Le
minusDays(1)
est uniquement destinée à faire le semaines du dimanche au samedi (au lieu de la valeur par défaut du lundi au dimanche connu pourJoda
). Pour NOUS (et d'autres semblables) locales, vous pouvez ignorer cette partie