J'ai un code simple mais délicat à écrire où j'ai donné la chaîne de date d'aujourd'hui en heure UTC.
String s = Instant.now().toString().replaceAll("T.*", "");
J'ai besoin de trouver le premier et le dernier jour du mois dernier et de les stocker dans des chaînes séparées. Des conseils pour y parvenir au mieux?
4 Réponses :
C'est assez simple lorsque vous utilisez LocalDate et ses fonctions arithmétiques de date:
LocalDate now = LocalDate.now(); LocalDate firstDayOfCurrentMonth = now.withDayOfMonth(1); LocalDate firstDayOfLastMonth = firstDayOfCurrentMonth.minusMonths(1); LocalDate lastDayOfLastMonth = firstDayOfCurrentMonth.minusDays(1);
Vous pouvez utiliser TemporalAdjusters .
Si vous n'avez pas à commencer par une chaîne, ne le faites pas. Commencez par un LocalDate si possible.
Si vous devez commencer par une chaîne, vous pouvez convertir vos s chaîne en LocalDate par parse:
LocalDate startOfMonth = ld.with(TemporalAdjusters.firstDayOfMonth()); LocalDate endOfMonth = ld.with(TemporalAdjusters.lastDayOfMonth());
Nous pouvons maintenant obtenir le début et la fin du mois comme ceci:
LocalDate ld = LocalDate.parse(s);
Je vous suggère de ne pas les convertir en chaînes jusqu'à ce que ce soit absolument nécessaire (comme vous l'avez affiché à l'utilisateur).
Si vous souhaitez obtenir le mois avant la date actuelle, utilisez le code ci-dessous:
LocalDate today = LocalDate.now(ZoneOffset.UTC); // Retrieve the date now
LocalDate lastMonth = today.minus(1, ChronoUnit.MONTHS); // Retrieve the date a month from now
System.out.println("First day: " + lastMonth.withDayOfMonth(1)); // retrieve the first date
System.out.println("Last day: " + lastMonth.withDayOfMonth(lastMonth.lengthOfMonth())); // retrieve the last date
Je voudrais utiliser LocalDate now = LocalDate.now (ZoneOffset.UTC); pour définir l'heure UTC .
@Arefe J'ai édité la réponse
Vous pouvez obtenir en utilisant LocalDate
LocalDate startOfMonth = LocalDate.now().with(TemporalAdjusters.firstDayOfMonth()); LocalDate endOfMonth = LocalDate.now().with(TemporalAdjusters.lastDayOfMonth());
N'utilisez pas de chaînes mais des dates pour commencer.
LocalDate.now ()?Veuillez inclure des exemples de données et expliquer pourquoi vous ne pouvez pas simplement utiliser now () comme suggéré, ainsi que la sortie attendue.
@JoakimDanielson J'utilise
import java.time. *et je ne veux pas me mêler de nombreuses bibliothèques. De plus, je dois faire attention à connaître la dateUTCactuelle et à trouver la première et la dernière date du mois dernier. Ok, je trouve qu'ils sont en effet dans la même bibliothèquejava.time.LocalDate.En effet, un doublon ... je ne sais pas pourquoi je ne reçois pas cela dans la recherche Google.