H31/5/2
→ 2019/5/2
→ 令和元年5月2日
のように、相互変換できるものが必要になり、作りました。
たとえば 2019/4/30
は、 令和元年
ではなく 平成31年
です。このあたりも正確に変換します。
作る
- Googleスプレッドシートで、
ツール
> スクリプトエディタ
を開き、スクリプトを書きます。
var map = {
'R': {'g':'令和', 'd':'2019/05/01'},
'H': {'g':'平成', 'd':'1989/01/08'},
'S': {'g':'昭和', 'd':'1926/12/25'},
'T': {'g':'大正', 'd':'1912/07/30'},
'M': {'g':'明治', 'd':'1868/01/25'}
};
// arg = アルファベットの和暦年月日(S60/2/3など)
// [optional] symbol = 年月日の区切り記号("/"など)
function w2s(arg, symbol) {
arg = arg.replace(/[\.-]/g, '/');
for(var i = 0; i < Object.keys(map).length; i++) {
var k = Object.keys(map)[i];
var year = new Date(map[k].d).getFullYear();
var r = new RegExp(k + '([0-9]+)(.+)', 'gi');
if(arg.match(r)) {
var result = (Number(arg.replace(r, "$1")) + year -1).toString() + arg.replace(r, "$2");
return result.replace(/\//g, (symbol ? symbol : "/"));
}
}
}
// arg = 西暦年月日
// [optional] symbol = true: 日本語表記, false: アルファベット表記, "-"など: 指定した記号
// [optional] zerofill = true: 月日のゼロ埋め(2桁固定), false: 埋めない
function s2w(arg, symbol, zerofill) {
var z = function(i) {
return ("0" + i).slice(-2);
}
var getDate = function(k, d, symbol) {
var dt = new Date(map[k].d);
var r = d.getFullYear() - dt.getFullYear() + 1;
if(typeof(symbol) == 'boolean' && symbol) {
r = (r == 1) ? '元' : (zerofill ? z(r) : r);
return map[k].g + r + '年' + (zerofill ? z(d.getMonth() + 1) : (d.getMonth() + 1)) + '月' + (zerofill ? z(d.getDate()) : d.getDate()) + '日';
}
else {
var symbol = symbol ? symbol : '.';
if(zerofill)
return k + z(r) + symbol + z(d.getMonth() + 1) + symbol + z(d.getDate());
else
return k + r + symbol + (d.getMonth() + 1) + symbol + d.getDate()
}
}
var d = new Date(arg);
for(var i = 0; i < Object.keys(map).length; i++) {
var k = Object.keys(map)[i];
if(d >= new Date(map[k].d))
return getDate(k, d, symbol);
}
}
保存
保存して、スプレッドシートのページに戻しましょう。
使う
西暦→和暦変換(s2w)
入力値 |
関数 |
変換結果 |
2019/2/3 |
=s2w(A1) |
H31.2.3 |
↓↓↓
第2引数
入力値(A1) |
関数 |
変換結果 |
2019/5/8 |
=s2w(A1, "-") |
R1-5-8 |
2019/5/8 |
=s2w(A1, "/") |
R1/5/8 |
-
true
で日本語表記となります。false
でアルファベット表記(デフォルト)です。
入力値(A1) |
関数 |
変換結果 |
2019/4/30 |
=s2w(A1, true) |
平成31年4月30日 |
第3引数
入力値(A1) |
関数 |
変換結果 |
2019/5/8 |
=s2w(A1, true, true) |
令和元年05月08日 |
2019/5/8 |
=s2w(A1, false, true) |
R01.05.08 |
和暦→西暦変換(w2s)
入力値 |
関数 |
変換結果 |
H35-10-2 |
=w2s(A1) |
2023/10/2 |
第2引数
入力値 |
関数 |
変換結果 |
R1-5-8 |
=s2w(A1, "-") |
2019-5-8 |
M151/9/30 |
=s2w(A1, ".") |
2018.9.30 |