Retrouvez la date de fin de mois dans différentes langues (C #, Java, Ruby, Javascript, VBA, Excel, MySQL, SQLite3, Oracle)
introduction
Lors du développement de systèmes et d'outils à usage professionnel, le dernier jour du mois peut parfois être requis, par exemple «date de facturation dans la facture» ou «date d'exécution du processus de clôture».
Par conséquent, j'ai étudié une méthode typique pour trouver la date de la fin du mois dans différentes langues.
C#
- Utilisez la méthode DaysInMonth de la structure DateTime pour trouver les "jours du mois", puis générez un objet DateTime en utilisant le nombre de jours trouvés pour trouver le dernier jour du mois.
- [À part] Si vous regardez l 'API officielle, il est dit "DateTime Struct". , Il semble que l'expression correcte consiste à l'appeler la structure DateTime au lieu de la classe DateTime.
LastDayOfMonth.cs
public class LastDayOfMonth
{
public static void CalcLastDayOfMonth()
{
DateTime today = DateTime.Now;
int days = DateTime.DaysInMonth(today.Year, today.Month);
System.Console.WriteLine(new DateTime(today.Year, today.Month, days).ToString("yyyy-MM-dd"));
}
}
Java
- Pour Java8 et supérieur, vous pouvez utiliser la classe YearMonth pour trouver directement la fin du mois.
- Utilisez
YearMonth.now ()
si vous voulez utiliser la date actuelle comme référence, et utilisez YearMonth.of (int year, int month)
si vous voulez spécifier une année et un mois arbitraires.
- Il existe également un moyen d'utiliser la classe LocalDate, mais l'utilisation de la classe YearMonth est plus courte et plus propre.
- Merci d'avoir souligné, @swordone.
- Pour Java7, vous devez utiliser la classe Calendar pour écrire le processus.
- URL de référence: Traitement de la date et de l'heure en Java (jusqu'à Java7)
LastDayOfMonth.java
import java.time.LocalDate;
import java.time.YearMonth;
public class LastDayOfMonth {
public static void main(String[] args) {
LocalDate lastDay = YearMonth.now().atEndOfMonth();
System.out.println(lastDay.toString());
}
}
Ruby
- Spécifiez une valeur négative (-1) pour le troisième argument du constructeur de classe Date pour trouver le dernier jour du mois.
irb
irb(main):001:0> require 'date'
=> true
irb(main):002:0> today = Date.today
=> #<Date: 4917313/2,0,2299161>
irb(main):003:0> puts Date.new(today.year, today.month, -1)
2019-06-30
=> nil
Javascript
- Spécifiez «0e jour du mois suivant un mois» dans le constructeur de la classe Date pour trouver le dernier jour du mois.
var today = new Date();
var last_day = new Date(today.getFullYear(), today.getMonth() + 1, 0);
document.write(last_day);
VBA
- Utilisez la fonction DateSerial pour spécifier "0ème jour du mois suivant n'importe quel mois" pour trouver le dernier jour du mois.
Module1
Public Sub PrintLastDayOfMonth()
Debug.print DateSerial(Year(Now()), Month(Now())+1, 0)
End Sub
Excel (fonction de feuille de calcul)
- Lorsque vous utilisez la fonction DATE, spécifiez "0e jour du mois suivant un mois quelconque" pour trouver le dernier jour du mois.
- Intégrez la formule suivante dans la cellule pour obtenir le dernier jour du mois.
- Lorsque vous utilisez la fonction EOMONTH, spécifiez "0e jour de tout mois" pour trouver le dernier jour du mois.
- Les mois spécifiés par la fonction DATE (mois suivant) et la fonction EOMONTH (mois en cours) sont différents.
- "EOMONTH" semble être une abréviation pour "End Of Month".
=DATE(YEAR(NOW()),MONTH(NOW())+1,0)
=EOMONTH(NOW(),0)
MySQL
- Spécifiez "date arbitraire" dans la fonction LAST_DAY pour trouver le dernier jour du mois.
- Dans l'exemple suivant, la date et l'heure actuelles sont spécifiées par la fonction MAINTENANT, mais vous pouvez également passer une chaîne de date comme argument, par exemple, '2019-06-22'.
mysql> SELECT LAST_DAY(NOW());
+-----------------+
| LAST_DAY(NOW()) |
+-----------------+
| 2019-06-30 |
+-----------------+
1 row in set (0.00 sec)
SQLite3
- Spécifiez "un jour avant le premier jour du mois suivant une date quelconque" dans la fonction de date pour trouver le dernier jour du mois.
- Après avoir spécifié la date actuelle avec 'maintenant' comme date arbitraire ...
- "+ 1 mois" correspond au mois suivant, "début du mois" correspond au premier jour du mois et "-1 jours" correspond à la veille.
sqlite> select date('now', '+1 months', 'start of month', '-1 days');
2019-06-30
Oracle
- Spécifiez "date arbitraire" dans la fonction LAST_DAY pour trouver le dernier jour du mois.
- Dans l'exemple suivant, la date et l'heure actuelles sont spécifiées par SYSDATE, mais vous pouvez également passer une date telle que
TO_DATE ('2020/02/19', 'YYYY / MM / DD')
comme argument.
SELECT LAST_DAY(SYSDATE) FROM DUAL;
LAST_DAY(SYSDATE)
-----------------
29-FEB-20
Résumé
- J'ai senti qu'il pourrait y avoir un processus pour obtenir le dernier jour du mois en insérant une grande date inexistante telle que "35 juin 2019", mais je n'ai pas pu la trouver dans la mesure où j'ai cherché.
- MySQL et Oracle "LAST_DAY" sont intuitifs.
- J'ai également trouvé très facile de comprendre que le nom de la fonction est "le dernier jour du mois".
- La fonction EOMONTH d'Excel est également très simple.
- Je m'attendais à ce que "Excel ait peu de fonctions et il serait difficile de trouver le dernier jour du mois ...", mais j'ai été trahi avec brio.
- SQLite3 est ~~ métamorphique ~~ étrange.
- La fonction date nécessite jusqu'à quatre arguments et vous devez passer un argument comme une phrase naturelle.
Langue |
Classe à utiliser/Méthode/une fonction |
Comment trouver le dernier jour |
C# |
DateTime |
"N'importe quelle année et mois" et "cette année et ce mois""Jours du mois"". |
Java(Java8~) |
YearMonth |
Spécifiez "date arbitraire". |
Ruby |
Date |
"N'importe quelle année et mois-Spécifiez "1 jour". |
Javascript |
Date |
Spécifiez "0e jour du mois suivant une année et un mois". |
VBA |
DateSerial |
Spécifiez "0e jour du mois suivant une année et un mois". |
Excel (fonction de feuille de calcul) |
DATE |
Spécifiez "0e jour du mois suivant une année et un mois". |
Excel (fonction de feuille de calcul) |
EOMONTH |
Spécifiez "0e jour de toute année et mois". |
MySQL |
LAST_DAY |
Spécifiez "date arbitraire". |
SQLite3 |
date |
Précisez "un jour avant le premier jour du mois suivant une date quelconque". |
Oracle |
LAST_DAY |
Spécifiez "date arbitraire". |
URL de référence