Finden Sie das Datum des Monatsendes in verschiedenen Sprachen (C #, Java, Ruby, Javascript, VBA, Excel, MySQL, SQLite3, Oracle).
Einführung
Bei der Entwicklung von Systemen und Tools für den geschäftlichen Gebrauch kann manchmal der letzte Tag des Monats erforderlich sein, z. B. "das Rechnungsdatum in der Rechnung" oder "das Ausführungsdatum des Abschlussprozesses".
Daher habe ich eine typische Methode untersucht, um das Datum des Monatsendes in verschiedenen Sprachen zu ermitteln.
C#
- Verwenden Sie die DaysInMonth-Methode der DateTime-Struktur, um die "Tage des Monats" zu ermitteln, und verwenden Sie dann die Anzahl der gefundenen Tage, um ein DateTime-Objekt zu erstellen, um den letzten Tag des Monats zu ermitteln.
- [Nebenbei] Wenn Sie sich die [offizielle API] ansehen (https://docs.microsoft.com/ja-jp/dotnet/api/system.datetime?view=netframework-4.8), steht dort "DateTime Struct". Es scheint, dass der richtige Ausdruck darin besteht, die DateTime-Struktur anstelle der DateTime-Klasse zu nennen.
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
- Für Java8 und höher können Sie die YearMonth-Klasse verwenden, um das Monatsende direkt zu ermitteln.
- Verwenden Sie "YearMonth.now ()", wenn Sie das aktuelle Datum als Referenz verwenden möchten, und verwenden Sie "YearMonth.of (int year, int month)", wenn Sie ein beliebiges Jahr und einen beliebigen Monat angeben möchten.
- Es gibt auch eine Möglichkeit, die LocalDate-Klasse zu verwenden, aber die YearMonth-Klasse ist kürzer und sauberer.
- Vielen Dank für den Hinweis, @swordone.
- Für Java7 müssen Sie die Calendar-Klasse verwenden, um den Prozess zu schreiben.
- Referenz-URL: Datum und Uhrzeit der Verarbeitung in Java (bis 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
- Geben Sie einen negativen Wert (-1) für das dritte Argument des Date-Klassenkonstruktors an, um den letzten Tag des Monats zu ermitteln.
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
- Geben Sie im Konstruktor der Date-Klasse "0. Tag des Monats nach einem Monat" an, um den letzten Tag des Monats zu ermitteln.
var today = new Date();
var last_day = new Date(today.getFullYear(), today.getMonth() + 1, 0);
document.write(last_day);
VBA
- Verwenden Sie die DateSerial-Funktion, um "0. Tag des Monats nach einem beliebigen Monat" anzugeben und den letzten Tag des Monats zu ermitteln.
Module1
Public Sub PrintLastDayOfMonth()
Debug.print DateSerial(Year(Now()), Month(Now())+1, 0)
End Sub
Excel (Arbeitsblattfunktion)
- Wenn Sie die DATE-Funktion verwenden, geben Sie "0. Tag des Monats nach einem beliebigen Monat" an, um den letzten Tag des Monats zu ermitteln.
- Betten Sie die folgende Formel in die Zelle ein, um den letzten Tag des Monats zu erhalten.
- Wenn Sie die EOMONTH-Funktion verwenden, geben Sie "0. Tag eines Monats" an, um den letzten Tag des Monats zu ermitteln.
- Die von der DATE-Funktion (nächster Monat) und der EOMONTH-Funktion (aktueller Monat) angegebenen Monate sind unterschiedlich.
- "EOMONTH" scheint eine Abkürzung für "End Of Month" zu sein.
=DATE(YEAR(NOW()),MONTH(NOW())+1,0)
=EOMONTH(NOW(),0)
MySQL
- Geben Sie in der Funktion LAST_DAY "beliebiges Datum" an, um den letzten Tag des Monats zu ermitteln.
- Im folgenden Beispiel wird das aktuelle Datum und die aktuelle Uhrzeit von der NOW-Funktion angegeben. Sie können jedoch auch eine Datumszeichenfolge als Argument übergeben, z. B. '2019-06-22'.
mysql> SELECT LAST_DAY(NOW());
+-----------------+
| LAST_DAY(NOW()) |
+-----------------+
| 2019-06-30 |
+-----------------+
1 row in set (0.00 sec)
SQLite3
- Geben Sie in der Datumsfunktion "einen Tag vor dem ersten Tag des Monats nach einem beliebigen Datum" an, um den letzten Tag des Monats zu ermitteln.
- Nach Angabe des aktuellen Datums mit "Jetzt" als beliebiges Datum ...
- '+ 1 Monat' ist der nächste Monat, 'Monatsanfang' ist der erste Tag des Monats und '-1 Tage' ist ein Tag zuvor.
sqlite> select date('now', '+1 months', 'start of month', '-1 days');
2019-06-30
Oracle
- Geben Sie in der Funktion LAST_DAY "beliebiges Datum" an, um den letzten Tag des Monats zu ermitteln.
- Im folgenden Beispiel wird das aktuelle Datum und die aktuelle Uhrzeit von SYSDATE angegeben. Sie können jedoch auch ein Datum wie "TO_DATE (" 2020/02/19 "," JJJJ / MM / TT ") als Argument übergeben.
SELECT LAST_DAY(SYSDATE) FROM DUAL;
LAST_DAY(SYSDATE)
-----------------
29-FEB-20
Zusammenfassung
- Ich hatte das Gefühl, dass es einen Prozess geben könnte, um den letzten Tag des Monats durch Einfügen eines großen nicht vorhandenen Datums wie "35. Juni 2019" zu erhalten, aber ich konnte es nicht finden, soweit ich gesucht habe.
- MySQL und Oracle "LAST_DAY" ist intuitiv.
- Ich fand es auch sehr leicht zu verstehen, dass der Name der Funktion "der letzte Tag des Monats" ist.
- Die EOMONTH-Funktion von Excel ist ebenfalls sehr einfach.
- Ich habe erwartet, dass "Excel nur wenige Funktionen hat und es schwierig sein würde, den letzten Tag des Monats zu finden ...", aber ich wurde brillant verraten.
- SQLite3 ist ~~ metamorph ~~ seltsam.
- Die Datumsfunktion erfordert bis zu vier Argumente, und Sie müssen ein Argument wie einen natürlichen Satz übergeben.
Sprache |
Klasse zu verwenden/Methode/Funktion |
Wie finde ich den letzten Tag? |
C# |
DateTime |
"Jedes Jahr und jeden Monat" und "in diesem Jahr und Monat""Tage des Monats"". |
Java(Java8~) |
YearMonth |
Geben Sie "beliebiges Datum" an. |
Ruby |
Date |
"Jedes Jahr und jeden Monat-Geben Sie "1 Tag" an. |
Javascript |
Date |
Geben Sie "0. Tag des Monats an, der auf ein Jahr und einen Monat folgt". |
VBA |
DateSerial |
Geben Sie "0. Tag des Monats an, der auf ein Jahr und einen Monat folgt". |
Excel (Arbeitsblattfunktion) |
DATE |
Geben Sie "0. Tag des Monats an, der auf ein Jahr und einen Monat folgt". |
Excel (Arbeitsblattfunktion) |
EOMONTH |
Geben Sie "0. Tag eines Jahres und Monats" an. |
MySQL |
LAST_DAY |
Geben Sie "beliebiges Datum" an. |
SQLite3 |
date |
Geben Sie "einen Tag vor dem ersten Tag des Monats nach einem beliebigen Datum" an. |
Oracle |
LAST_DAY |
Geben Sie "beliebiges Datum" an. |
Referenz-URL