|
|
@ -1,27 +1,112 @@ |
|
|
|
-module(utTime). |
|
|
|
-include("utTime.hrl"). |
|
|
|
|
|
|
|
-compile([export_all, nowarn_export_all]). |
|
|
|
|
|
|
|
-type year() :: non_neg_integer(). |
|
|
|
-type month() :: 1..12. |
|
|
|
-type day() :: 1..31. |
|
|
|
-type hour() :: 0..23. |
|
|
|
-type minute() :: 0..59. |
|
|
|
-type second() :: 0..59. |
|
|
|
-type date() :: {year(), month(), day()}. |
|
|
|
-type time() :: {hour(), minute(), second()}. |
|
|
|
-type datetime() :: {date(), time()}. |
|
|
|
-type timestamp() :: non_neg_integer(). %% 时间戳 |
|
|
|
-type week() :: 1..7. |
|
|
|
-type weekCycle() :: 1..53. %% 一年最多53个周 |
|
|
|
-type yearWeekCycle() :: {year(), weekCycle()}. |
|
|
|
|
|
|
|
-import(calendar, |
|
|
|
[ |
|
|
|
day_of_the_week/1 |
|
|
|
, iso_week_number/1 |
|
|
|
, date_to_gregorian_days/1 |
|
|
|
-import(calendar, [day_of_the_week/1, iso_week_number/1, date_to_gregorian_days/1]). |
|
|
|
|
|
|
|
-export([ |
|
|
|
now/0 %% 当前的时间戳 秒 |
|
|
|
, nowMs/0 %% 当前的时间戳 毫秒 |
|
|
|
, curDateTime/0 %% 当前的日期 |
|
|
|
, curDate/0 %% 当前的年月日 |
|
|
|
, curTime/0 %% 当前的时分秒 |
|
|
|
, weekDay/0 %% 当前星期几 |
|
|
|
, weekDay/1 %% 计算Data是星期几 |
|
|
|
, weekDay/3 %% 计算 年 月 日 是星期几 |
|
|
|
, weekCycle/0 %% 计算当前的星期周期 |
|
|
|
, weekCycle/1 %% 计算 Date 的星期周期 |
|
|
|
, secToLDateTime/1 %% 将秒单位的时间戳 转为本地 datetime() |
|
|
|
, secToUDateTime/1 %% 将秒单位的时间戳 转为世界 datetime() |
|
|
|
, lDateTimeToSec/1 %% 将本地的 datetime() 转为秒单位的时间戳 |
|
|
|
, uDateTimeToSec/1 %% 将世界的 datetime() 转为秒单位的时间戳 |
|
|
|
, timeZoneDiff/0 %% 获取本地时区与UTC时区 时间差 单位秒 由于某些时区存在夏令时 下面的计算在不同时候 可能会返回不同的值 所以并不能只计算一次 需要在每次用到的时候 重新计算 |
|
|
|
, countLDay/1 %% 计算1970年到Sec 本地经过了多少天 |
|
|
|
, countUDay/1 %% 计算1970年到Sec 世界经过了多少天 |
|
|
|
, isSameLDay/2 %% 判断两个时间戳是否为本地的同一天 |
|
|
|
, isSameUDay/2 %% 判断两个时间戳是否为本地的同一天 |
|
|
|
, countLWeek/1 %% 计算1970年到Sec 本地经过了多少周 |
|
|
|
, countUWeek/1 %% 计算1970年到Sec 世界经过了多少周 |
|
|
|
, isSameLWeek/2 %% 判断两个时间戳是否为本地的同一周 |
|
|
|
, isSameUWeek/2 %% 判断两个时间戳是否为本地的同一周 |
|
|
|
, isSameLMonth/2 %% 判断两个时间戳是否为本地的同一月 |
|
|
|
, isSameUMonth/2 %% 判断两个时间戳是否为世界的同一月 |
|
|
|
, countLDay/2 %% 计算1970年到Sec 本地经过了多少天 ZeroOffset为零点偏移时间 |
|
|
|
, countUDay/2 %% 计算1970年到Sec 世界经过了多少天 ZeroOffset为零点偏移时间 |
|
|
|
, isSameLDay/3 %% 判断两个时间戳是否为同一天 ZeroOffset为零点偏移时间 |
|
|
|
, isSameUDay/3 %% 判断两个时间戳是否为同一天 ZeroOffset为零点偏移时间 |
|
|
|
, countLWeek/2 %% 计算1970年到Sec 本地经过了多少周 ZeroOffset为零点偏移时间 |
|
|
|
, countUWeek/2 %% 计算1970年到Sec 世界经过了多少周 ZeroOffset为零点偏移时间 |
|
|
|
, isSameLWeek/3 %% 判断两个时间戳是否为同一周 ZeroOffset为零点偏移时间 |
|
|
|
, isSameUWeek/3 %% 判断两个时间戳是否为同一周 ZeroOffset为零点偏移时间 |
|
|
|
, isSameLMonth/3 %% 判断两个时间戳是否为本地的同一月 ZeroOffset为零点偏移时间 |
|
|
|
, isSameUMonth/3 %% 判断两个时间戳是否为世界的同一月 ZeroOffset为零点偏移时间 |
|
|
|
, hourBegin/0 %% 当前小时开始时间戳 |
|
|
|
, hourBegin/1 %% Sec所在小时开始时间戳 |
|
|
|
, hourEnd/0 %% 当前小时结束时间戳 |
|
|
|
, hourEnd/1 %% Sec所在小时结束时间戳 |
|
|
|
, dayLBegin/0 %% 本地当前天开始时间戳 |
|
|
|
, dayLBegin/1 %% 本地Sec所在天开始时间戳 |
|
|
|
, dayUBegin/0 %% 世界Sec所在天开始时间戳 |
|
|
|
, dayUBegin/1 %% 世界Sec所在天开始时间戳 |
|
|
|
, dayLEnd/0 %% 本地当前天结束时间戳 |
|
|
|
, dayLEnd/1 %% 本地Sec所在天结束时间戳 |
|
|
|
, dayUEnd/0 %% 世界当前天结束时间戳 |
|
|
|
, dayUEnd/1 %% 世界Sec所在天结束时间戳 |
|
|
|
, dayLBeginEnd/0 %% 本地当前天开始结束时间戳 |
|
|
|
, dayLBeginEnd/1 %% 本地Sec所在天开始结束时间戳 |
|
|
|
, dayUBeginEnd/0 %% 世界当前天开始结束时间戳 |
|
|
|
, dayUBeginEnd/1 %% 世界Sec所在天开始结束时间戳 |
|
|
|
, weekLBegin/0 %% 本地当前周开始时间戳 |
|
|
|
, weekLBegin/1 %% 本地Sec所在周开始时间戳 |
|
|
|
, weekUBegin/0 %% 世界当前周的开始时间戳 |
|
|
|
, weekUBegin/1 %% 世界Sec所在周的开始时间戳 |
|
|
|
, weekLEnd/0 %% 本地当前周的结束时间戳 |
|
|
|
, weekLEnd/1 %% 本地Sec所在周的结束时间戳 |
|
|
|
, weekUEnd/0 %% 世界当前周的开始时间戳 |
|
|
|
, weekUEnd/1 %% 世界Sec所在周的结束时间戳 |
|
|
|
, weekLBeginEnd/0 %% 本地当前周的开始结束时间戳 |
|
|
|
, weekLBeginEnd/1 %% 本地Sec所在周的开始结束时间戳 |
|
|
|
, weekUBeginEnd/0 %% 世界当前周的开始结束时间戳 |
|
|
|
, weekUBeginEnd/1 %% 世界Sec所在周的开始结束时间戳 |
|
|
|
, monthLBegin/0 %% 本地当前月的开始时间戳 |
|
|
|
, monthLBegin/1 %% 本地Sec所在月的开始时间戳 |
|
|
|
, monthUBegin/0 %% 世界当前月的开始时间戳 |
|
|
|
, monthUBegin/1 %% 世界Sec所在月的开始时间戳 |
|
|
|
, monthLEnd/0 %% 本地当前月的结束时间戳 |
|
|
|
, monthLEnd/1 %% 本地Sec所在月的结束时间戳 |
|
|
|
, monthUEnd/0 %% 世界当前周的结束时间戳 |
|
|
|
, monthUEnd/1 %% 世界Sec所在月的结束时间戳 |
|
|
|
, isLeapYear/1 %% 闰年判断函数 |
|
|
|
, monthDay/2 %% 根据 年 月 返回对应月的天数 |
|
|
|
, monthSecs/2 %% 根据年月 返回月的总秒数 |
|
|
|
, monthLBeginEnd/0 %% 本地当前月的开始结束时间戳 |
|
|
|
, monthLBeginEnd/1 %% 本地Sec所在月的开始结束时间戳 |
|
|
|
, monthUBeginEnd/0 %% 世界当前月的开始结束时间戳 |
|
|
|
, monthUBeginEnd/1 %% 世界Sec所在月的开始结束时间戳 |
|
|
|
, sWeekName/1 %% 星期名字缩写 |
|
|
|
, lWeekName/1 %% 星期名字全称 |
|
|
|
, sMonthName/1 %% 月份名称缩写 |
|
|
|
, lMonthName/1 %% 月份名称全称 |
|
|
|
, dateNumber/0 %% 年月日的数字version |
|
|
|
, dateNumber/1 %% 年月日的数字version |
|
|
|
, dateNumber/3 %% 年月日的数字version |
|
|
|
, numberDate/1 %% dateNumber 反转 |
|
|
|
, secToDayTime/1 %% 秒转为天数 和 time() |
|
|
|
, diffLDateTimeSec/2 %% 计算两个本地datetime() 时间差 返回单位 秒 |
|
|
|
, diffUDateTimeSec/2 %% 计算两个世界datetime() 时间差 返回单位 秒 |
|
|
|
, diffLDateTimeDayTime/2 %% 计算两个本地datetime() 时间差 返回单位 daytime() |
|
|
|
, diffUDateTimeDayTime/2 %% 计算两个世界datetime() 时间差 返回单位 daytime() |
|
|
|
, diffSecs/2 %% 计算两个秒单位的 时间戳的时间差 返回单位 daytime() |
|
|
|
, timeToSecs/1 %% 转换 time() 为 Sec |
|
|
|
, daysInYear/1 %% 计算 Date为该年的哪一天 |
|
|
|
, dateToStr/1 %% Data to Str |
|
|
|
, dateToStr/3 %% Data to Str |
|
|
|
, dateToStr/2 %% Data to Str |
|
|
|
, dateToStr/4 %% Data to Str |
|
|
|
, timeToStr/1 %% time to Str |
|
|
|
, timeToStr/3 %% time to Str |
|
|
|
, timeToStr/2 %% time to Str |
|
|
|
, timeToStr/4 %% time to Str |
|
|
|
, dateTimeStr/1 %% datetime to Str |
|
|
|
]). |
|
|
|
|
|
|
|
%% 当前的时间戳 秒 |
|
|
@ -75,23 +160,23 @@ weekCycle(Date) -> |
|
|
|
calendar:iso_week_number(Date). |
|
|
|
|
|
|
|
%% 将秒单位的时间戳 转为本地 datetime() |
|
|
|
-spec secToLocalTime(Sec :: timestamp()) -> datetime(). |
|
|
|
secToLocalTime(Ses) -> |
|
|
|
-spec secToLDateTime(Sec :: timestamp()) -> datetime(). |
|
|
|
secToLDateTime(Ses) -> |
|
|
|
erlang:universaltime_to_localtime(erlang:posixtime_to_universaltime(Ses)). |
|
|
|
|
|
|
|
%% 将秒单位的时间戳 转为世界 datetime() |
|
|
|
-spec secToUniversalTime(Sec :: timestamp()) -> datetime(). |
|
|
|
secToUniversalTime(Ses) -> |
|
|
|
-spec secToUDateTime(Sec :: timestamp()) -> datetime(). |
|
|
|
secToUDateTime(Ses) -> |
|
|
|
erlang:posixtime_to_universaltime(Ses). |
|
|
|
|
|
|
|
%% 将本地的 datetime() 转为秒单位的时间戳 |
|
|
|
-spec localTimeToSec(LocalDate :: datetime()) -> timestamp(). |
|
|
|
localTimeToSec(LocalDate) -> |
|
|
|
-spec lDateTimeToSec(LocalDate :: datetime()) -> timestamp(). |
|
|
|
lDateTimeToSec(LocalDate) -> |
|
|
|
erlang:universaltime_to_posixtime(erlang:localtime_to_universaltime(LocalDate)). |
|
|
|
|
|
|
|
%% 将世界的 datetime() 转为秒单位的时间戳 |
|
|
|
-spec universalTimeToSec(UniversalTime :: datetime()) -> timestamp(). |
|
|
|
universalTimeToSec(UniversalTime) -> |
|
|
|
-spec uDateTimeToSec(UniversalTime :: datetime()) -> timestamp(). |
|
|
|
uDateTimeToSec(UniversalTime) -> |
|
|
|
erlang:universaltime_to_posixtime(UniversalTime). |
|
|
|
|
|
|
|
%% 获取本地时区与UTC时区 时间差 单位秒 由于某些时区存在夏令时 下面的计算在不同时候 可能会返回不同的值 所以并不能只计算一次 需要在每次用到的时候 重新计算 |
|
|
@ -145,15 +230,15 @@ isSameUWeek(Sec1, Sec2) -> |
|
|
|
%% 判断两个时间戳是否为本地的同一月 |
|
|
|
-spec isSameLMonth(Sec1 :: timestamp(), Sec2 :: timestamp()) -> boolean(). |
|
|
|
isSameLMonth(Sec1, Sec2) -> |
|
|
|
{{Year1, Month1, _Day1}, _Time1} = secToLocalTime(Sec1), |
|
|
|
{{Year2, Month2, _Day2}, _Time2} = secToLocalTime(Sec2), |
|
|
|
{{Year1, Month1, _Day1}, _Time1} = secToLDateTime(Sec1), |
|
|
|
{{Year2, Month2, _Day2}, _Time2} = secToLDateTime(Sec2), |
|
|
|
Month1 =:= Month2 andalso Year1 =:= Year2. |
|
|
|
|
|
|
|
%% 判断两个时间戳是否为世界的同一月 |
|
|
|
-spec isSameUMonth(Sec1 :: timestamp(), Sec2 :: timestamp()) -> boolean(). |
|
|
|
isSameUMonth(Sec1, Sec2) -> |
|
|
|
{{Year1, Month1, _Day1}, _Time1} = secToUniversalTime(Sec1), |
|
|
|
{{Year2, Month2, _Day2}, _Time2} = secToUniversalTime(Sec2), |
|
|
|
{{Year1, Month1, _Day1}, _Time1} = secToUDateTime(Sec1), |
|
|
|
{{Year2, Month2, _Day2}, _Time2} = secToUDateTime(Sec2), |
|
|
|
Month1 =:= Month2 andalso Year1 =:= Year2. |
|
|
|
|
|
|
|
%% 计算1970年到Sec 本地经过了多少天 ZeroOffset为零点偏移时间 |
|
|
@ -201,15 +286,15 @@ isSameUWeek(Sec1, Sec2, ZeroOffset) -> |
|
|
|
%% 判断两个时间戳是否为本地的同一月 ZeroOffset为零点偏移时间 |
|
|
|
-spec isSameLMonth(Sec1 :: timestamp(), Sec2 :: timestamp(), ZeroOffset :: timestamp()) -> boolean(). |
|
|
|
isSameLMonth(Sec1, Sec2, ZeroOffset) -> |
|
|
|
{{Year1, Month1, _Day1}, _Time1} = secToLocalTime(Sec1 - ZeroOffset), |
|
|
|
{{Year2, Month2, _Day2}, _Time2} = secToLocalTime(Sec2 - ZeroOffset), |
|
|
|
{{Year1, Month1, _Day1}, _Time1} = secToLDateTime(Sec1 - ZeroOffset), |
|
|
|
{{Year2, Month2, _Day2}, _Time2} = secToLDateTime(Sec2 - ZeroOffset), |
|
|
|
Month1 =:= Month2 andalso Year1 =:= Year2. |
|
|
|
|
|
|
|
%% 判断两个时间戳是否为世界的同一月 ZeroOffset为零点偏移时间 |
|
|
|
-spec isSameUMonth(Sec1 :: timestamp(), Sec2 :: timestamp(), ZeroOffset :: timestamp()) -> boolean(). |
|
|
|
isSameUMonth(Sec1, Sec2, ZeroOffset) -> |
|
|
|
{{Year1, Month1, _Day1}, _Time1} = secToUniversalTime(Sec1 - ZeroOffset), |
|
|
|
{{Year2, Month2, _Day2}, _Time2} = secToUniversalTime(Sec2 - ZeroOffset), |
|
|
|
{{Year1, Month1, _Day1}, _Time1} = secToUDateTime(Sec1 - ZeroOffset), |
|
|
|
{{Year2, Month2, _Day2}, _Time2} = secToUDateTime(Sec2 - ZeroOffset), |
|
|
|
Month1 =:= Month2 andalso Year1 =:= Year2. |
|
|
|
|
|
|
|
%% 当前小时开始时间戳 |
|
|
@ -378,16 +463,16 @@ weekUBeginEnd(Sec) -> |
|
|
|
-spec monthLBegin() -> timestamp(). |
|
|
|
monthLBegin() -> |
|
|
|
Sec = erlang:system_time(second), |
|
|
|
{{Year, Month, _Day}, _Time} = secToLocalTime(Sec), |
|
|
|
{{Year, Month, _Day}, _Time} = secToLDateTime(Sec), |
|
|
|
MonthStartDateTime = {{Year, Month, 1}, {0, 0, 0}}, |
|
|
|
localTimeToSec(MonthStartDateTime). |
|
|
|
lDateTimeToSec(MonthStartDateTime). |
|
|
|
|
|
|
|
%% 本地Sec所在月的开始时间戳 |
|
|
|
-spec monthLBegin(Sec :: timestamp()) -> timestamp(). |
|
|
|
monthLBegin(Sec) -> |
|
|
|
{{Year, Month, _Day}, _Time} = secToLocalTime(Sec), |
|
|
|
{{Year, Month, _Day}, _Time} = secToLDateTime(Sec), |
|
|
|
MonthStartDateTime = {{Year, Month, 1}, {0, 0, 0}}, |
|
|
|
localTimeToSec(MonthStartDateTime). |
|
|
|
lDateTimeToSec(MonthStartDateTime). |
|
|
|
|
|
|
|
%% 世界当前月的开始时间戳 |
|
|
|
-spec monthUBegin() -> timestamp(). |
|
|
@ -408,18 +493,18 @@ monthUBegin(Sec) -> |
|
|
|
-spec monthLEnd() -> timestamp(). |
|
|
|
monthLEnd() -> |
|
|
|
Sec = erlang:system_time(second), |
|
|
|
{{Year, Month, _Day}, _Time} = secToLocalTime(Sec), |
|
|
|
{{Year, Month, _Day}, _Time} = secToLDateTime(Sec), |
|
|
|
MonthDay = monthDay(Year, Month), |
|
|
|
MonthEndDateTime = {{Year, Month, MonthDay}, {23, 59, 59}}, |
|
|
|
localTimeToSec(MonthEndDateTime). |
|
|
|
lDateTimeToSec(MonthEndDateTime). |
|
|
|
|
|
|
|
%% 本地Sec所在月的结束时间戳 |
|
|
|
-spec monthLEnd(Sec :: timestamp()) -> timestamp(). |
|
|
|
monthLEnd(Sec) -> |
|
|
|
{{Year, Month, _Day}, _Time} = secToLocalTime(Sec), |
|
|
|
{{Year, Month, _Day}, _Time} = secToLDateTime(Sec), |
|
|
|
MonthDay = monthDay(Year, Month), |
|
|
|
MonthEndDateTime = {{Year, Month, MonthDay}, {23, 59, 59}}, |
|
|
|
localTimeToSec(MonthEndDateTime). |
|
|
|
lDateTimeToSec(MonthEndDateTime). |
|
|
|
|
|
|
|
%% 世界当前周的结束时间戳 |
|
|
|
-spec monthUEnd() -> timestamp(). |
|
|
@ -475,17 +560,17 @@ monthSecs(_, _) -> |
|
|
|
-spec monthLBeginEnd() -> timestamp(). |
|
|
|
monthLBeginEnd() -> |
|
|
|
Sec = erlang:system_time(second), |
|
|
|
{{Year, Month, _Day}, _Time} = secToLocalTime(Sec), |
|
|
|
{{Year, Month, _Day}, _Time} = secToLDateTime(Sec), |
|
|
|
MonthStartDateTime = {{Year, Month, 1}, {0, 0, 0}}, |
|
|
|
Begin = localTimeToSec(MonthStartDateTime), |
|
|
|
Begin = lDateTimeToSec(MonthStartDateTime), |
|
|
|
{Begin, Begin + monthSecs(Year, Month)}. |
|
|
|
|
|
|
|
%% 本地Sec所在月的开始结束时间戳 |
|
|
|
-spec monthLBeginEnd(Sec :: timestamp()) -> timestamp(). |
|
|
|
monthLBeginEnd(Sec) -> |
|
|
|
{{Year, Month, _Day}, _Time} = secToLocalTime(Sec), |
|
|
|
{{Year, Month, _Day}, _Time} = secToLDateTime(Sec), |
|
|
|
MonthStartDateTime = {{Year, Month, 1}, {0, 0, 0}}, |
|
|
|
Begin = localTimeToSec(MonthStartDateTime), |
|
|
|
Begin = lDateTimeToSec(MonthStartDateTime), |
|
|
|
{Begin, Begin + monthSecs(Year, Month)}. |
|
|
|
|
|
|
|
%% 世界当前月的开始结束时间戳 |
|
|
@ -593,25 +678,25 @@ secToDayTime(Secs) -> |
|
|
|
%% 计算两个本地datetime() 时间差 单位 秒 |
|
|
|
-spec diffLDateTimeSec(datetime(), datetime()) -> timestamp(). |
|
|
|
diffLDateTimeSec(DateTime1, DateTime2) -> |
|
|
|
Secs = localTimeToSec(DateTime1) - localTimeToSec(DateTime2), |
|
|
|
Secs = lDateTimeToSec(DateTime1) - lDateTimeToSec(DateTime2), |
|
|
|
erlang:abs(Secs). |
|
|
|
|
|
|
|
%% 计算两个世界datetime() 时间差 单位 秒 |
|
|
|
-spec diffUDateTimeSec(datetime(), datetime()) -> timestamp(). |
|
|
|
diffUDateTimeSec(DateTime1, DateTime2) -> |
|
|
|
Secs = universalTimeToSec(DateTime1) - universalTimeToSec(DateTime2), |
|
|
|
Secs = uDateTimeToSec(DateTime1) - uDateTimeToSec(DateTime2), |
|
|
|
erlang:abs(Secs). |
|
|
|
|
|
|
|
%% 计算两个本地datetime() 时间差 单位 daytime() |
|
|
|
-spec diffLDateTimeDayTime(datetime(), datetime()) -> timestamp(). |
|
|
|
diffLDateTimeDayTime(DateTime1, DateTime2) -> |
|
|
|
Secs = localTimeToSec(DateTime1) - localTimeToSec(DateTime2), |
|
|
|
Secs = lDateTimeToSec(DateTime1) - lDateTimeToSec(DateTime2), |
|
|
|
secToDayTime(erlang:abs(Secs)). |
|
|
|
|
|
|
|
%% 计算两个世界datetime() 时间差 单位 daytime() |
|
|
|
-spec diffUDateTimeDayTime(datetime(), datetime()) -> timestamp(). |
|
|
|
diffUDateTimeDayTime(DateTime1, DateTime2) -> |
|
|
|
Secs = universalTimeToSec(DateTime1) - universalTimeToSec(DateTime2), |
|
|
|
Secs = uDateTimeToSec(DateTime1) - uDateTimeToSec(DateTime2), |
|
|
|
secToDayTime(erlang:abs(Secs)). |
|
|
|
|
|
|
|
%% 计算两个秒单位的 时间戳 的时间差 单位 daytime() |
|
|
@ -627,48 +712,57 @@ timeToSecs({H, M, S}) -> |
|
|
|
%% 计算 Date为该年的哪一天 |
|
|
|
-spec daysInYear(date()) -> integer(). |
|
|
|
daysInYear({Y, _, _} = Date) -> |
|
|
|
date_to_gregorian_days(Date) - date_to_gregorian_days({Y, 1, 1}). |
|
|
|
calendar:date_to_gregorian_days(Date) - calendar:date_to_gregorian_days({Y, 1, 1}). |
|
|
|
|
|
|
|
%% Data to Str |
|
|
|
-spec dateToStr(date()) -> string(). |
|
|
|
dateToStr({Year, Month, Day}) -> |
|
|
|
S = io_lib:format("~B_~2.10.0B_~2.10.0B", [Year, Month, Day]), |
|
|
|
lists:flatten(S). |
|
|
|
|
|
|
|
%% Data to Str |
|
|
|
-spec dateToStr(year(), month(), day()) -> string(). |
|
|
|
dateToStr(Year, Month, Day) -> |
|
|
|
S = io_lib:format("~B_~2.10.0B_~2.10.0B", [Year, Month, Day]), |
|
|
|
lists:flatten(S). |
|
|
|
|
|
|
|
%% Data to Str |
|
|
|
-spec dateToStr(date(), string()) -> string(). |
|
|
|
dateToStr({Year, Month, Day}, Separator) -> |
|
|
|
S = io_lib:format("~B~w~2.10.0B~w~2.10.0B", [Year, Separator, Month, Separator, Day]), |
|
|
|
lists:flatten(S). |
|
|
|
|
|
|
|
%% Data to Str |
|
|
|
-spec dateToStr(year(), month(), day(), string()) -> string(). |
|
|
|
dateToStr(Year, Month, Day, Separator) -> |
|
|
|
S = io_lib:format("~B~w~2.10.0B~w~2.10.0B", [Year, Separator, Month, Separator, Day]), |
|
|
|
lists:flatten(S). |
|
|
|
|
|
|
|
%% time to Str |
|
|
|
-spec timeToStr(time()) -> string(). |
|
|
|
timeToStr({Hour, Minute, Second}) -> |
|
|
|
S = io_lib:format("~B:~2.10.0B:~2.10.0B", [Hour, Minute, Second]), |
|
|
|
lists:flatten(S). |
|
|
|
|
|
|
|
%% time to Str |
|
|
|
-spec timeToStr(hour(), minute(), second()) -> string(). |
|
|
|
timeToStr(Hour, Minute, Second) -> |
|
|
|
S = io_lib:format("~B:~2.10.0B:~2.10.0B", [Hour, Minute, Second]), |
|
|
|
lists:flatten(S). |
|
|
|
|
|
|
|
%% time to Str |
|
|
|
-spec timeToStr(time(), string()) -> string(). |
|
|
|
timeToStr({Hour, Minute, Second}, Separator) -> |
|
|
|
S = io_lib:format("~B~w~2.10.0B~w~2.10.0B", [Hour, Separator, Minute, Separator, Second]), |
|
|
|
lists:flatten(S). |
|
|
|
|
|
|
|
%% time to Str |
|
|
|
-spec timeToStr(hour(), minute(), second(), string()) -> string(). |
|
|
|
timeToStr(Hour, Minute, Second, Separator) -> |
|
|
|
S = io_lib:format("~B~w~2.10.0B~w~2.10.0B", [Hour, Separator, Minute, Separator, Second]), |
|
|
|
lists:flatten(S). |
|
|
|
|
|
|
|
%% datetime to Str |
|
|
|
-spec dateTimeStr(datetime()) -> string(). |
|
|
|
dateTimeStr({{Year, Month, Day}, {Hour, Minute, Second}}) -> |
|
|
|
S = io_lib:format("~B_~2.10.0B_~2.10.0B ~B:~2.10.0B:~2.10.0B", [Year, Month, Day, Hour, Minute, Second]), |