TimeToStr()とStrToTime()
/*
日付時刻型変数(datetime)の初期値は1970.01.01 00:00
日付時刻型変数(int)の初期値は1970.01.01 00:00を0とする
なので
西暦.月.日 時:分:秒
1970.01.01 00:00:01 == 1
1970.01.01 00:00:02 == 2
1970.01.01 00:01:00 == 60
1970.01.01 01:00:00 == 3600
となります。
*/
// TimeToStr()は西暦.月.日 時:分を返す
string time1 = TimeToStr(1245024000);
Print("time1",time1); //結果 2009.06.15 00:00
// StrToTime()は変数の宣言した型によって異なる。
// int型で変数宣言すると戻り値もint型
int startTime_minute_int = StrToTime(time1);
Print("startTime_minute_int",startTime_minute_int);
//結果 1245024000
// datetime型で変数宣言すると戻り値もdatetime型
datetime startTime_minute_datetime = StrToTime(time1);
Print("startTime_minute_datetime",startTime_minute_datetime);
//結果 2009.06.15 00:00:00
/*
結果 1245024000
と
結果 2009.06.15 00:00:00
は同じです。
if(2009.06.15 00:00:00 == 1245024000) //結果はtrue
*/
TimeCurrent()とその他サーバー時刻を取得する関数
//TimeCurrent()関数は現在のサーバー時刻を返します。
//TimeLocal()関数は現在のPCの時刻を返します。
/*
TimeLocal()-TimeCurrent()=7時間(25209秒)
時差です。
*/
Print("現在のサーバー時間",TimeCurrent());//2020.01.01 00:00:00
Print("現在のサーバー時間の西暦",Year());//2020
Print("現在のサーバー時間の月",Month());//1~12
Print("現在のサーバー時間の日",Day());//1~31
Print("現在のサーバー時間の曜日",DayOfWeek()); //0:日曜日,6:土曜日
Print("現在のサーバー時間の時",Hour());//0~23
Print("現在のサーバー時間の分",Minute());//0~59
/*
上記で使われている
Year(),Month(),Day(),DayOfWeek(),Hour(),Minute()関数はすべてサーバー時刻を
返します。
*/
TimeLocal()とその他PC時刻を取得するための関数
/*
PC時刻を取得するには
TimeYear(),TimeMonth(),TimeDay(),TimeDayOfWeek(),TimeHour(),TimeMinute()の
引数にTimeLocal()を入れればOKです。
*/
Print("現在のPCの時間",TimeLocal()); //2020.01.01 00:00:00
Print("現在のPCの時間の西暦",TimeYear(TimeLocal())); //2020
Print("現在のPCの時間の月",TimeMonth(TimeLocal())); //1~12
Print("現在のPCの時間の日",TimeDay(TimeLocal())); //1~31
Print("現在のPCの時間の曜日",TimeDayOfWeek(TimeLocal())); //0:日曜日,6:土曜日
Print("現在のPCの時間の時",TimeHour(TimeLocal())); //0~23
Print("現在のPCの時間の分",TimeMinute(TimeLocal())); //0~59
//datetime型をint型にキャストすると数値で出力されます。
datetime timeCurrent = TimeCurrent();//server_time
Print("timeCurrent(cast)",(int)timeCurrent); //1580507845
//そのままだともちろんdatetime型で出力されます。
Print("timeCurrent",timeCurrent); // 2020.01.31 21:57:25
//datetime型をint型にキャストすると数値で出力されます。
datetime timeLocal = TimeLocal();//pc_time
Print("timeLocal(cast)",(int)timeLocal); //1580533054
//そのままだともちろんdatetime型で出力されます。
Print("timeLocal",timeLocal); // 2020.02.01 04:57:34
//変数をint型にしても数値で出力されます。
int timeCurrent_int = TimeCurrent();//server_time
Print("timeCurrent_int",timeCurrent_int); //1580507845
//変数をint型にしても数値で出力されます。
int timeLocal_int = TimeLocal();//pc_time
Print("timeLocal_int",timeLocal_int); //1580533054
//サーバー時刻とPC時刻の差は25209です。(7時間)
string sa = timeLocal_int - timeCurrent_int;
Print("sa",sa); //結果 25209
//現在のサーバー時刻と現PCの時刻の差は7時間
string sa_time = TimeToStr(sa);
Print("sa_time",sa_time); //結果 1970.01.01 07:00
//差を変数に代入してint型の現在時刻に足すと、現在時刻+7時間が出力されます。
int h7 = 25209;
Print(TimeToStr(timeLocal_int+h7)); //2020.02.01 11:57:34
//25209とありますが毎回、多少ずれます。本来の7時間の秒数は25200ですので9秒ほど実際ずれています。
//3600秒(1h)*7h=25200