プログラム言語 標準関数(日時系)
日時フォーマット
ISO8601
ISOで定められた日付と時刻の表記に関する国際規格
Format | TimeZone | 基本書式 | 拡張書式 |
---|---|---|---|
yyyy-MM-ddTHH:mm:ss | 日本標準時JST | 20000101T010101+0900 | 2000-01-01T01:01:01+0900 |
〃 | 協定世界時UTC | 20000101T010101 | 2000-01-01T01:01:01 |
時間型変数
DateTime myDate1 = new DateTime(2000, 1, 1, 10, 10, 10);
システム日時
DateTime dt = DateTime.Now;
Dim myDate1 As New DateTime(2000, 1, 1, 10, 10, 10);
import java.util.Date;
現在日時の取得
Date date = new Date();
System.out.println(date);
⇒ Sat Feb 14 12:19:10 JST 2015
1970年1月1日午前0時(GMT)から現在までの経過時間(ミリ秒)
long nowTime = date.getTime();
1000ミリ秒 × 60 ⇒ 1分
× 60 ⇒ 1時間
× 24 ⇒ 1日
long oneday = 1000 * 60 * 60 * 24;
現在から、1日後の時間
Date date = new Date(nowTime + oneday);
⇒ 1970年1月2日午前0時(GMT)
Calendar型
import java.util.Calendar;
現在日時の取得
Calendar calendar = Calendar.getInstance();
calendar.set(2000, 1, 1,10,0,0);
Date型 ⇒ Calendar型 変換
calendar.setTime(date);
Calendar型 ⇒ Date型 変換
Date date = calendar.getTime();
date_default_timzone_set(
'Asia/Tokyo'
);$date = date(
'Y/m/d H:i:s'
);
$date = new DateTime();
$date = $date->format('Y-m-d'
);
任意の日時
$date = new DateTime('2019-1-1 15:15:15'
);
$date = $date->format('Y-m-d H:i:s'
);
$date = new DateTime();
$date->setDate(2019,1,1)->setTime(15,15,15);
現在時刻
$date = Carbon::now();
→2021-05-26 03:37:45.413718 Asia/Tokyo (+09:00)
$date = Carbon::today();
→2021-05-26 00:00:00
UTC時刻
$date = Carbon::now('UTC'
);
日付を指定して取得
$date = Carbon::create(2019, 1, 2, 3, 4, 5);
→2021-01-02 03:04:05.0 Asia/Tokyo (+09:00)
「\」が必要。他は同じ
現在日付、日時
print(datetime.date.today())
print(datetime.datetime.today())
指定日付、指定日時
now = datetime.date(2019,1,1)
print(now.year) #2019
print(now.month) #1
print(now.day) #1
nowTime : Thu Oct 16 2014 04:27:31 GMT+0900
var myDate = new Date(2000,1,1,1,1,1);
2000年1月1日1時1分1秒を作成
echo %DATE%
2019/01/01
現在日時
echo %TIME%
10:10:10
時・分・秒等の取得
Carbon::today()
Carbon::yesterday()
Carbon::tomorrow()
月初
Carbon::now()->startOfMonth();
月末 の(00:00:00)
Carbon::now()->lastOfMonth();
月末 の(23:59:59)
Carbon::now()->endOfMonth();
その日の 00:00:00
Carbon::now()->startOfDay();
その日の 23:59:59.999999
Carbon::now()->endOfDay();
年 | 文字列 | 数値 |
年 | $date->format('Y' ); |
$date->y |
月 | $date->format('m' ); |
$date->m |
日 | $date->format('d' ); |
$date->d |
時 | $date->format('H' ); |
$date->h |
分 | $date->format('i' ); |
$date->i |
秒 | $date->format('s' ); |
$date->s |
週 |
$date->format('w' );->0:日 1:月 〜 6:土 $weeks[ '日', '月', 〜 '土' ];$weeks[$date->format( 'w' )];
|
now = datetime.datetime(2019,1,1,10,10,10)
print(now.hour) #10
print(now.minute) #10
print(now.second) #10
print(now.date()) #2019-01-01
print(now.time()) #10:10:10
print(now.weekday()) #1(火曜日)
# 0 : 月曜日, 1 : 火曜日, 2 : 水曜日, 3 : 木曜日, 4 : 金曜日, 5 : 土曜日, 6 : 日曜日
import calendar
月初と月末を配列で取得
range = calendar.monthrange(2024, 1) #1, 31
月末
end_day = calendar.monthrange(2024, 1)[1] #31
int h = myTime.Hour;
int m = myTime.Minute;
int s = myTime.Second;
int ms = myTime.Millisecond;
int y = myTime.Year;
int m = myTime.Month;
int d = myTime.Day;
DayOfWeek week = myTime.DayOfWeek;
⇒ week : DayOfWeek.Saturday
ReturnValue = DateTime.Year(“2009/12/31”)
ReturnValue = “2009”
Month()、DateTime.Month()
ReturnValue = DateTime.Month(“2009/12/31”)
ReturnValue = “12”
Day()、DateTime.Day()
ReturnValue = DateTime.Day(“2009/12/31”)
ReturnValue = “31”
WeekDay()、DateTime.WeekDay()
ReturnValue = DateTime.WeekDay(“2009/12/31”)
ReturnValue = “5” (1:日、2:月、3:火)
WeekDayName()
ReturnValue = WeekDayName(4)
ReturnValue = “水” (1:日、2:月、3:火)
Hour()、DateTime.Hour()
ReturnValue = DateTime.Hour(“15:30”)
ReturnValue = 15
Minute()、DateTime.Minute()
ReturnValue = DateTime.Minute(“15:30”)
ReturnValue = 30
Second()、DateTime.Second()
ReturnValue = DateTime.Second(“15:30:45”)
ReturnValue = 45
【ミリ秒を取得する場合】
※標準関数ではミリ秒を取得できない
Public Declare Sub GetLocalTime Lib “kernel32” (lpSystemTime As SYSTEMTIME)
Public Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
Dim typeNow As SYSTEMTIME
Dim sglNow As Single
Call GetLocalTime(typeNow)
sglNow = CSng(typeNow.wSecond & “.” & typeNow.wMilliseconds)
Calendar calendar = Calendar.getInstance();
calendar.set(2000, 1, 1, 10, 0, 0);
int y = calendar.get(Calendar.YEAR);
int m = calendar.get(Calendar.MONTH);
int d = calendar.get(Calendar.DATE);
int w = calendar.get(Calendar.WEDNESDAY);
int h1 = calendar.get(Calendar.HOUR);
int h2 = calendar.get(Calendar.HOUR_OF_DAY);
int min = calendar.get(Calendar.MINUTE);
int sec = calendar.get(Calendar.SECOND);
int ms = calendar.get(Calendar.MILLISECOND);
int ampm = calendar.get(Calendar.AM_PM);
var y = myDate.getFullYear();
var m = myDate.getMonth();
var d = myDate.getDate();
var h = myDate.getHours();
var m = myDate.getMinutes();
var s = myDate.getSeconds();
var ms = myDate.getMilliseconds();
曜日
var w = myDate.getDay();
1970年1月1日00:00:00からの経過時間をミリ秒で取得
var ms = myDate.getTime();
SET yyyymmdd=%DATE:-10,4%%DATE:-10,4%%date:~8,2%
SET yyyy=%DATE:~-10,4%
SET mm=%DATE:~-5,2%
SET dd=%date:~8,2%
日付名のファイルへ出力
echo ~ >> test%yyyymmdd%.log
test20190101.log
加減
use Carbon\Carbon;
$before = Carbon::create(2021, 1, 2, 3, 4, 5);
$after = $before->addDays(1);
→before:2021/01/03 03:04:05.000000
→after:2021/01/03 03:04:05.000000
イミュータブルインスタンス利用
use Carbon\CarbonImmutable;
$before = CarbonImmutable::create(2021, 1, 2, 3, 4, 5);
$after = $before->addDays(1);
→before:2021/01/02 03:04:05.000000
→after:2021/01/03 03:04:05.000000
他
addYears(n), addMonths(n), addDays(n), addHours(n), addMinutes(n), addSeconds(n)
subYears(n), subMonths(n), subDays(n), subHours(n), subMinutes(n), subSeconds(n)
$datetime = $datetime->modify(~);
年 | $~->modify('+1 year' ); |
1年後 |
月 | $~->modify('+1 month' ); |
1か月後 |
日 | $~->modify('+1 day' ); |
1日後 |
週 | $~->modify('+1 week' ); |
1週間後 |
時 | $~->modify('+1 hour' ); |
1時間後 |
分 | $~->modify('+1 minute' ); |
1分後 |
秒 | $~->modify('+1 second' ); |
1秒後 |
月初 | $~->modify('first day of this months' |
当月1日 |
月末 | $~->modify('last day of this months' |
当月末尾 |
翌月初 | $~->modify('first day of next months' |
来月1日 |
先月末 | $~->modify('first day of last months' |
先月1日 |
翌週 | $~->modify('sunday' |
次の日曜日 |
今週 | $~->modify('monday this week' |
今週の月曜日 |
指定週 | $~->modify('third sunday of this months' |
第三日曜日 |
複合 | $~->modify('+1 months + 1 days + 1 hours' |
1ヶ月1日1時間後 |
from dateutil.relativedelta import relativedelta
before = datetime.date.today()
after = before + relativedelta(days=1)
after = before + relativedelta(months=1)
after = before + relativedelta(years=1)
引数 |
意味 |
---|---|
years |
年 |
months |
月 |
days |
日 |
weeks |
週 |
hours |
時 |
minutes |
分 |
seconds |
秒 |
microseconds |
マイクロ秒 |
myDateから取得した年に1を加算
myDate.setYear(myDate.getFullYear() + 1);
myDateから取得した月に1を加算
myDate.setMonth(myDate.getMonth() + 1);
myDateから取得した日に1を加算
myDate.setDate(myDate.getDate() + 1);
myDateから取得した時間に1を加算
myDate.setHours(myDate.getHours() + 1);
myDateから取得した分に1を加算
myDate.setMinutes(myDate.getMinutes() + 1);
myDateから取得した秒に1を加算
myDate.setSeconds(myDate.getSeconds() + 1);
myDateから取得したミリ秒に1ミリ秒を加算
myDate.setMilliseconds(myDate.getMilliseconds() + 1);
dt = dt.AddDays(double value);
dt = dt.AddHours(double value);
dt = dt.AddMilliseconds(double value);
dt = dt.AddMinutes(double value);
dt = dt.AddMonths(int months);
dt = dt.AddSeconds(double value);
dt = dt.AddTicks(long value);
dt = dt.AddYears(int value);
Calendar calendar = Calendar.getInstance();
10日後
calendar.add(Calendar.DATE, 10);
10時間後
calendar.add(Calendar.HOUR, 10);
表示形式
$date = Carbon::create(2021, 1, 2, 3, 4, 5);
$after = $date->format('Y/m/d H:i:s.u'
);
→2021/01/02 03:04:05.000000
$after = $date->format(DATE_ATOM);
→2021-01-02T03:04:05+09:00
曜日
$after = $date->format('w'
);
→0(日)、1(月)...6(土)
$after = $date->format('N'
); ※ISO-8601形式
→1(日)、2(月)...7(土)
$after = $date->format('D'
);
Sun, Mon...Sat
$after = $date->format('l'
); ※Lの小文字
Sundeay, Monday...Saturday
'Y/m/d'
);$result = $date->format(
'Y/m/d H:i:s'
);
$time = $date->getTimestamp();
$his = gmdate('h:i:s'
, $time);
string disp9 = myDate.ToString("yyyy/MM/dd(ddd) hh:mm:ss");
⇒disp9 : 2005/01/01(土) 10:10:10
string disp10 = myDate.ToString("yy年M月d日 ddd曜日 h時m分s秒");
⇒disp10 : 05年1月1日 土曜日 10時10分10秒
24時間表記
string dt = new DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
12時間表記
string dt = new DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss");
Dim disp9 As String = myDate.ToString("yyyy/MM/dd(ddd) hh:mm:ss")
'⇒disp9 : 2005/01/01(土) 10:10:10
Dim disp10 As String = myDate.ToString("yy年M月d日ddd曜日 h自m分s秒")
'⇒disp10 : 05年1月1日 土曜日 10時10分10秒
System.out.println(myFormat.format(date));
⇒ 2015年02月14日 土曜日 午後 04時50分53秒
myFormat.applyPattern("yyyy/MM/dd kk:mm:ss");
System.out.println(myFormat.format(date));
⇒ 2015/02/14 16:49:40
$date_format = $query->func()->date_format([
'date' => 'identifier',
'"%Y/%m/%d"' => 'identifier'
]);
$date = $query
->select(['aaa' => $date_format
])
->all();
str = datetime.datetime(2019,1,1,10,10,10).strftime(
'%Y/%m/%d %H:%M:%S'
)print(str) #2019/01/01 10:10:10
時間(日)差
$isAfter = Carbon::today()->isAfter(Carbon::now());
$datetime1 = 〜;
$datetime2 = 〜;
$diff = datetime1->diff($datetime2);
$y = $diff->y
$m = $diff->m
$d = $diff->d
$h = $diff->h
$i = $diff->i
$s = $diff->s
$diff = datetime1->getTimestamp() - $datetime2)->getTimestamp();
秒
DateTime myDate2 = new DateTime(2000, 2, 1, 10, 10, 10);
int diffYear = myDate2.Year - myDate1.Year;
int diffMonth = myDate2.Month - myDate1.Month;
int diffDay = myDate2.Day - myDate1.Day;
TimeSpan span = myDate2 - myDate1;
diffDay = span.Days;
int diffHour = myDate2.Hour - myDate1.Hour;
diffHour = span.Hours;
int diffMinute = myDate2.Minute - myDate1.Minute;
diffMinute = span.Minutes;
int diffSecond = myDate2.Second - myDate1.Second;
diffSecond = span.Seconds;
Dim myDate2 As New Date(2000, 2, 1, 10, 10, 10)
Dim diffYear As Integer = DateDiff(DateInterval.Year, myDate1, myDate2)
Dim diffMonth As Integer = DateDiff(DateInterval.Month, myDate1, myDate2)
Dim diffDay As Integer = DateDiff(DateInterval.Day, myDate1, myDate2)
Dim diffDayOfYear As Integer = DateDiff(DateInterval.DayOfYear, myDate1, myDate2)
Dim diffWeekday As Integer = DateDiff(DateInterval.Weekday, myDate1, myDate2)
System.out.println(beforeDate);
Sat Feb 14 19:11:07 JST 2015
↑の1分後
Date afterDate = new Date(beforeDate.getTime() + 60000);
System.out.println(afterDate);
Sat Feb 14 19:12:07 JST 2015
Boolean beforeAfter;
日時が前か?
beforeAfter = beforeDate.before(afterDate);
beforeAfter : true
日時が後か?
beforeAfter = beforeDate.after(afterDate);
beforeAfter : false
時間差(ミリ秒)
long timeDiff = afterDate.getTime() - beforeDate.getTime();
timeDiff : 60000
Calendar beforeCal = Calendar.getInstance();
Calendar afterCal = Calendar.getInstance();
afterCal.setTimeInMillis(beforeCal.getTimeInMillis());
afterCal.add(Calendar.MINUTE, 1);
時間差(ミリ秒)
timeDiff = afterCal.getTimeInMillis() - beforeCal.getTimeInMillis();
timeDiff : 60000
var time = myDate1.getTime() - myDate1.getTime2();
文字列変換
"2014/1/1",
"1/1",
"2014/2/30",
"2014/1/1 10:10:10",
"2014/1/1 10:10:65"
};
try
{
foreach (string elm in strDate)
{
DateTime dteTest = DateTime.Parse(s: elm);
⇒ {2014/01/01 00:00:00}
⇒ {2014/01/01 00:00:00}
⇒ エラー
⇒ {2014/01/01 10:10:10}
⇒ エラー
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
foreach (string elm in strDate)
{
DateTime dteResult;
if (DateTime.TryParse(s:elm, result: out dteResult))
{
Console.WriteLine(dteResult.ToString());
⇒ {2014/01/01 00:00:00}
⇒ {2014/01/01 00:00:00}
⇒ {2014/01/01 10:10:10}
}
}
$date = Carbon::parse(
'2021/01/02 03:04:05'
);
date = datetime.datetime.strptime(
'2019/1/1 10:10:10', '%Y/%m/%d %H:%M:%S'
)print(date) #2019-01-01 10:10:10
世界協定時刻(UTC)変換
世界協定時刻(UTC)に変換する
DateTime utcTime = TimeZoneInfo.ConvertTimeToUtc(dt)
ローカル時刻に変換する
DateTime localTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, TimeZoneInfo.Local)
'世界協定時刻(UTC)に変換する
Dim utcTime As DateTime = TimeZoneInfo.ConvertTimeToUtc(dt)
'ローカル時刻に変換する
Dim localTime As DateTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, TimeZoneInfo.Local)