Looks like JavaScript, feels like Ruby, and it is a script language fitting in C programmers.
This project is maintained by Kray-G
DateTime Library is not an embedded library, so you should load it by using.
using DateTime;
Basically, use new to instanciate a DateTime object.
new DateTime() … 現在時刻でインスタンス化new DateTime(dateString) … 文字列をパースしてインスタンス化new DateTime(Unixtime) … UNIXエポックの時刻からインスタンス化new DateTime(year, month, day[, hour, minute, second]) … 日時情報を個別に指定してインスタンス化But you can use one of the followings as you like.
Those are the same and it returns a DateTime object created by new internally.
DateTime.parse(...)DateTime(...)You can use following formats as a dateString.
"2020-01-01", "2020-1-1""2020/01/01", "2020/1/1""2020-01-01T10:00:05", "2020-1-01T10:0:5""2020/01/01 10:00:05", "2020/1/01 10:0:5"A DateTime object has following methods.
| メソッド | 動作概要 |
|---|---|
isLeapYear() |
true if it is a leap year. |
unixtime() |
Returns a Unix epoch time. |
datetime() |
Returns a JSON object. |
year() |
Returns a year. |
month() |
Returns a month. |
day() |
Returns a day. |
hour() |
Returns a hour. |
minute() |
Returns a minute. |
second() |
Returns a second. |
weekday() |
Returns a week. (0: Sunday, 1: Monday, …, 6: Saturday) |
isSunday() |
true if it is a Sunday. |
isMonday() |
true if it is a Monday. |
isTuesday() |
true if it is a Tuesday. |
isWednesday() |
true if it is a Wednesday. |
isThursday() |
true if it is a Thursday. |
isFriday() |
true if it is a Friday. |
isSaturday() |
true if it is a Saturday. |
clone() |
Returns a clone object. |
addDay(day) |
Goes forward by the number of days specified by day. (destructive) |
subDay(day) |
Goes back by the number of days specified by day. (destructive) |
addMonth(month) |
Goes forward by the number of months specified by month. (destructive) |
subMonth(month) |
Goes back by the number of months specified by month. (destructive) |
next() |
Returns a DateTime object with a next day. |
+(day) |
Returns a DateTime object gone forward by the number of days specified by day. |
-(day) |
Returns a DateTime object gone back by the number of days specified by day. |
>>(month) |
Returns a DateTime object gone forward by the number of months specified by month. |
<<(month) |
Returns a DateTime object gone back by the number of months specified by month. |
<=>(dt) |
0 if it is a same time, -1 if dt is a later date and time, otherwise 1. |
format(fmtString) |
Returns a string formatted by fmtString. It supports a format string as follows.%YYYY%: Year of 4 digits, %YY%: Year of 2 digits.%MM%:Month of 2 digits, %M%: Month of 1 digit.%DD%: Day of 2 digits., %D%: Day of 1 digit.%hh%: Hour of 2 digits, %h%: Hour of 1 digit.%mm%: Minute of 2 digits, %m%: Minute of 1 digit.%ss%: Second of 2 digits, %s%: Second of 1 digit. |
When you move a month by the operator << or >> and there is no same date in the moved month, the date will be an end of the month.
using DateTime;
System.println(DateTime("2001-3-28") << 1); // 2001/02/28 00:00:00
System.println(DateTime("2001-3-31") << 1); // 2001/02/28 00:00:00
This may cause what you don’t expected.
using DateTime;
System.println(DateTime("2001-1-31") >> 2); // 2001/03/31 00:00:00
System.println(DateTime("2001-1-31") >> 1 >> 1); // 2001/03/28 00:00:00
System.println(DateTime("2001-1-31") >> 1 >> -1); // 2001/01/28 00:00:00
A DateTime object can be used with Range.
using DateTime;
(DateTime(2020,1,1)..DateTime(2020,1,10))
.each(&(d) => System.println(d));
This example will show the last date because the range operator is ...
If the range operator is ..., the last date will not be shown.
2020/01/01 00:00:00
2020/01/02 00:00:00
2020/01/03 00:00:00
2020/01/04 00:00:00
2020/01/05 00:00:00
2020/01/06 00:00:00
2020/01/07 00:00:00
2020/01/08 00:00:00
2020/01/09 00:00:00
2020/01/10 00:00:00
Of course, a Range of a Datetime object can be also used in for-in.
using DateTime;
for (var d in DateTime(2020,1,1)...DateTime(2020,1,10)) {
System.println(d);
}
This loop do not include the last date.
2020/01/01 00:00:00
2020/01/02 00:00:00
2020/01/03 00:00:00
2020/01/04 00:00:00
2020/01/05 00:00:00
2020/01/06 00:00:00
2020/01/07 00:00:00
2020/01/08 00:00:00
2020/01/09 00:00:00
using DateTime;
function test(dt) {
System.println(dt);
}
test(new DateTime("2020/01/01"));
test(DateTime("2020/01/01"));
test(DateTime.parse("2020/01/01"));
2020/01/01 00:00:00
2020/01/01 00:00:00
2020/01/01 00:00:00
using DateTime;
function test(dt) {
System.println("=> ", dt);
System.println(" isLeapYear = ", dt.isLeapYear());
System.println(" datetime = ", dt.datetime());
System.println(" year = ", dt.year());
System.println(" month = ", dt.month());
System.println(" day = ", dt.day());
System.println(" hour = ", dt.hour());
System.println(" minute = ", dt.minute());
System.println(" second = ", dt.second());
System.println(" weekday = ", dt.weekday());
System.println(" isSunday = ", dt.isSunday());
System.println(" isMonday = ", dt.isMonday());
System.println(" isTuesday = ", dt.isTuesday());
System.println(" isWednesday = ", dt.isWednesday());
System.println(" isThursday = ", dt.isThursday());
System.println(" isFriday = ", dt.isFriday());
System.println(" isSaturday = ", dt.isSaturday());
}
(DateTime("2020/01/01")..DateTime("2020/01/3")).each { => test(_1) };
=> 2020/01/01 00:00:00
isLeapYear = 1
datetime = {"day":1,"hour":0,"minute":0,"month":1,"second":0,"weekday":3,"year":2020}
year = 2020
month = 1
day = 1
hour = 0
minute = 0
second = 0
weekday = 3
isSunday = 0
isMonday = 0
isTuesday = 0
isWednesday = 1
isThursday = 0
isFriday = 0
isSaturday = 0
=> 2020/01/02 00:00:00
isLeapYear = 1
datetime = {"day":2,"hour":0,"minute":0,"month":1,"second":0,"weekday":4,"year":2020}
year = 2020
month = 1
day = 2
hour = 0
minute = 0
second = 0
weekday = 4
isSunday = 0
isMonday = 0
isTuesday = 0
isWednesday = 0
isThursday = 1
isFriday = 0
isSaturday = 0
=> 2020/01/03 00:00:00
isLeapYear = 1
datetime = {"day":3,"hour":0,"minute":0,"month":1,"second":0,"weekday":5,"year":2020}
year = 2020
month = 1
day = 3
hour = 0
minute = 0
second = 0
weekday = 5
isSunday = 0
isMonday = 0
isTuesday = 0
isWednesday = 0
isThursday = 0
isFriday = 1
isSaturday = 0
using DateTime;
function test(dt) {
System.println("=> ", dt);
System.println(" isLeapYear = ", dt.isLeapYear());
System.println(" datetime = ", dt.datetime());
System.println(" year = ", dt.year());
System.println(" month = ", dt.month());
System.println(" day = ", dt.day());
System.println(" hour = ", dt.hour());
System.println(" minute = ", dt.minute());
System.println(" second = ", dt.second());
System.println(" weekday = ", dt.weekday());
System.println(" isSunday = ", dt.isSunday());
System.println(" isMonday = ", dt.isMonday());
System.println(" isTuesday = ", dt.isTuesday());
System.println(" isWednesday = ", dt.isWednesday());
System.println(" isThursday = ", dt.isThursday());
System.println(" isFriday = ", dt.isFriday());
System.println(" isSaturday = ", dt.isSaturday());
}
(DateTime("2021/01/01")..DateTime("2021/01/3")).each { => test(_1) };
=> 2021/01/01 00:00:00
isLeapYear = 0
datetime = {"day":1,"hour":0,"minute":0,"month":1,"second":0,"weekday":5,"year":2021}
year = 2021
month = 1
day = 1
hour = 0
minute = 0
second = 0
weekday = 5
isSunday = 0
isMonday = 0
isTuesday = 0
isWednesday = 0
isThursday = 0
isFriday = 1
isSaturday = 0
=> 2021/01/02 00:00:00
isLeapYear = 0
datetime = {"day":2,"hour":0,"minute":0,"month":1,"second":0,"weekday":6,"year":2021}
year = 2021
month = 1
day = 2
hour = 0
minute = 0
second = 0
weekday = 6
isSunday = 0
isMonday = 0
isTuesday = 0
isWednesday = 0
isThursday = 0
isFriday = 0
isSaturday = 1
=> 2021/01/03 00:00:00
isLeapYear = 0
datetime = {"day":3,"hour":0,"minute":0,"month":1,"second":0,"weekday":0,"year":2021}
year = 2021
month = 1
day = 3
hour = 0
minute = 0
second = 0
weekday = 0
isSunday = 1
isMonday = 0
isTuesday = 0
isWednesday = 0
isThursday = 0
isFriday = 0
isSaturday = 0
using DateTime;
System.println(DateTime("2001-3-28") << 1); // 2001/02/28 00:00:00
System.println(DateTime("2001-3-31") << 1); // 2001/02/28 00:00:00
2001/02/28 00:00:00
2001/02/28 00:00:00
using DateTime;
System.println(DateTime("2001-1-31") >> 2); // 2001/03/31 00:00:00
System.println(DateTime("2001-1-31") >> 1 >> 1); // 2001/03/28 00:00:00
System.println(DateTime("2001-1-31") >> 1 >> -1); // 2001/01/28 00:00:00
2001/03/31 00:00:00
2001/03/28 00:00:00
2001/01/28 00:00:00
using DateTime;
for (var d in DateTime(2020,1,1)...DateTime(2020,1,10)) {
System.println(d);
}
2020/01/01 00:00:00
2020/01/02 00:00:00
2020/01/03 00:00:00
2020/01/04 00:00:00
2020/01/05 00:00:00
2020/01/06 00:00:00
2020/01/07 00:00:00
2020/01/08 00:00:00
2020/01/09 00:00:00