6
votes

Comment trouver la dernière date de fin du mois avec Joda Time?

Dites une date de fin de mois est la date d'un mois qui est la dernière journée de fin de semaine et non de vacances dans ce mois-ci. Comment trouver la dernière date de fin du mois dernier avec Joda Time? Par exemple, la réponse pour aujourd'hui serait le vendredi 28 mai, car celle-ci était la fin du mois de mai et peut être le mois le plus récent pour la fin.


4 commentaires

Et si aujourd'hui est déjà le 28 mai? Voulez-vous revenir aujourd'hui ou toujours ceci depuis le mois dernier?


@Ballusc dans ce cas, je voudrais le mois d'avril.


@PolygenLubants alors je voudrais 28 mai


duplicaté possible de obtenir La semaine de début et de fin de la semaine donnée une date et une semaine de début de la semaine et Ce et Ce et Ce et Ce .


3 Réponses :


5
votes

DateTime.dayofmonth.getMaximumImValue () donne le dernier jour du mois. Obtenez le jour de la semaine de cette journée pour vérifier si c'est le week-end.


0 commentaires

3
votes

En règle générale:

  • Trouver mois en cours
  • remonter un mois
  • Début du dernier jour de ce mois:
    • Si ce n'est ni un week-end ni un jour férié, c'est la date de fin
    • Sinon, revenez une journée et répétez

      ou peut-être qu'il est:

      • Commencez à partir d'aujourd'hui:
        • Si ce n'est ni ...

          Ce n'est pas le plus efficace, mais il est bon marché de mettre en cache la valeur une fois que vous le calculez, car il sera valide pendant un mois entier. Vous pouvez facilement calculer des dates de fin de mois «tous» et le stocker dans une table de recherche également. Vous voulez certainement calculer lorsque le prochain sera, car c'est lorsque la valeur mise en cache actuelle expire expire.


          Exemple

          Voici un extrait que je suis rapidement concocté: xxx

          aujourd'hui ( 2010-06-14 12: 04: 57z ), cette impression "2010-05-26T12: 00: 42.702Z" << / code>. Notez que isweekendorlidemeid est juste un talon pour une implémentation réelle. J'imagine que le vrai test sera plutôt compliqué (la partie vacances), et peut valoir une question à elle seule.


0 commentaires

0
votes

Basé sur votre question et vos commentaires, vous essayez de résoudre un problème comme celui-ci:

  1. Si aujourd'hui est une journée de travail, puis retourner le dernier jour ouvrable du mois dernier
  2. Si aujourd'hui n'est pas une journée de travail, alors:
    1. Si la dernière journée de travail est le dernier jour du mois, renvoyez le jour ouvrable le plus récent
    2. sinon retour le dernier jour ouvrable du mois dernier

      Voici une implémentation avec la bibliothèque de planification financière Lamma ( http://lamma.io ). La méthode date.backward (calendrier) est utilisée pour trouver le jour ouvrable le plus récent.

      Si vous voulez vraiment faire de l'implémentation dans Joda, vous devez fondamentalement mettre en œuvre la date.pastMonthend () et date.backwardward (calendrier) par vous-même. xxx


0 commentaires