カテゴリー
Excelでの時間の計算をシェルコマンドでどう取り扱うのか〜DATEの計算方法
※ 当ページには【広告/PR】を含む場合があります。
2021/04/13
はじめに
Excelでの日付表示について
1900/1/1 00:00:00
Dateコマンド使った変換
Dateコマンド
(Busyboxの)Gnu date
Csv > Xlsxデータインポートのとき
-2209075200
$ echo '2021年01月01日'|
sed -r 's/([0-9]{4})[^0-9]+([0-9]{1,2})[^0-9]+([0-9]{1,2})[^0-9]+/\1-\2-\3/g'|
awk -F"," '
function parse_epochtime(rawtime) {
#👇Awk内部で外部のコマンドを利用できる
cmd="date -u --date=\""rawtime" 00:00:00\" +\"%s\"";
cmd | getline parsed_time
close(cmd)
#👆getlineで呼び出した外部コマンドは自動では閉じないので明示にclose関数で閉じる
#👇1900/01/00とのEpoch時間差を取得
parsed_time = (parsed_time + 2209075200)/60/60/24 + 1;
return parsed_time;
}
{
epochtime = parse_epochtime($1);
print epochtime
}
'
44197
Xlsx > Csvデータエクスポートのとき
$ echo '44197' | awk -F"," '
function parse_excel_date(rawtime) {
#👇1900/01/00とのEpoch時間差を取得
parsed_time = (rawtime - 1) * 60 * 60 * 24 - 2209075200;
#👇Awk内部で外部のコマンドを利用
cmd="date -d @"parsed_time " +\"%Y年%m月%d日\"";
cmd | getline excel_date; close(cmd);
#👇Awkでは選択肢としてstrftimeを利用しても可能
#excel_date = strftime("%Y年%m月%d日", parsed_time);
return excel_date;
}
{
print parse_excel_date($1);
}
'
2021年01月01日
まとめ
参考サイト
記事を書いた人
ナンデモ系エンジニア
主にAngularでフロントエンド開発することが多いです。 開発環境はLinuxメインで進めているので、シェルコマンドも多用しております。 コツコツとプログラミングするのが好きな人間です。
カテゴリー