ユニコード文字の「1月」〜「12月」と「1日」〜「31日」
2022-01-25-1
[Programming][Perl]
「1月」〜「12月」、「1日」〜「31日」が1文字文の全角幅で表示できるUnicode文字。
幅固定なのでレイアウトの細かい調整がなくて良い。
例1:
(日付部分テンプレ、中心寄せが難しいケース、等幅便利)
例2:
(カレンダーは㉛などの囲み数字も使えるけど囲みはいらない……)
月(1-12)、日(1-31)を入力として月日文字を出す Perl での簡単な方法:
サンプルプログラム:
出力結果:
追記: 月・日・曜日
ついでに囲み数字も。50まである。
1〜20, 21〜35, 36〜50 で分割されている。
1から20までなら:
幅固定なのでレイアウトの細かい調整がなくて良い。
月 | ㋀ | %E3%8B%80 (12992) | ㋋ | %E3%8B%8B (13003) |
日 | ㏠ | %E3%8F%A0 (13280) | ㏾ | %E3%8F%BE (13310) |
例1:
(日付部分テンプレ、中心寄せが難しいケース、等幅便利)
例2:
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
㏠ | ||||||
㏡ | ㏢ | ㏣ | ㏤ | ㏥ | ㏦ | ㏧ |
㏨ | ㏩ | ㏪ | ㏫ | ㏬ | ㏭ | ㏮ |
㏯ | ㏰ | ㏱ | ㏲ | ㏳ | ㏴ | ㏵ |
㏶ | ㏷ | ㏸ | ㏹ | ㏺ | ㏻ | ㏼ |
㏽ | ㏾ |
月(1-12)、日(1-31)を入力として月日文字を出す Perl での簡単な方法:
pack("U", 12991 + $month) pack("U", 13279 + $day_of_month)
サンプルプログラム:
#!/usr/bin/env perl # -*- coding: utf-8 -*- use strict; use warnings; use utf8; binmode STDOUT, ":utf8"; print join(",", "㋀", ord("㋀"), "㏠", ord("㏠"))."\n"; print join(",", map {"$_:".pack("U", 12991 + $_)} (1..12))."\n"; print join(",", map {"$_:".pack("U", 13279 + $_)} (1..31))."\n";
出力結果:
㋀,12992,㏠,13280 1:㋀,2:㋁,3:㋂,4:㋃,5:㋄,6:㋅,7:㋆,8:㋇,9:㋈,10:㋉,11:㋊,12:㋋ 1:㏠,2:㏡,3:㏢,4:㏣,5:㏤,6:㏥,7:㏦,8:㏧,9:㏨,10:㏩,11:㏪,12:㏫,13:㏬,14:㏭,15:㏮,16:㏯,17:㏰,18:㏱,19:㏲,20:㏳,21:㏴,22:㏵,23:㏶,24:㏷,25:㏸,26:㏹,27:㏺,28:㏻,29:㏼,30:㏽,31:㏾
追記: 月・日・曜日
perl -C -Mutf8 -le '$month=3;$day=11;$dow=5;print pack("U*",12991+$month,13279+$day,12842+($dow-1)%7)' ㋂㏪㈮
ついでに囲み数字も。50まである。
1〜20, 21〜35, 36〜50 で分割されている。
1〜20 | ① | %E2%91%A0 (9312) | ⑳ | %E2%91%B3 (9331) |
21〜35 | ㉑ | %E3%89%91 (12881) | ㉟ | %E3%89%9F (12895) |
36〜50 | ㊱ | %E3%8A%B1 (12977) | ㊿ | %E3%8A%BF (12991) |
1から20までなら:
1から50までなら:pack("U", 9311 + $_)
pack("U", $_ + ($_ < 21 ? 9311 : $_ < 36 ? 12860 : 12941))
参考
- Wikipedia:囲みCJK文字・月
- Wikipedia:CJK互換用文字
- Unicode文字一覧表 - instant tools
- いつもお世話になっているサイト
- 月と日の文字は、Unicode文字一覧表の「32」と「33」のとこ