logo サブスレッド

Google日本語入力で日付入力

むおおおお!

今日は小ネタです。

辞書変換で日付を出したい

様々な場面で日付を具体的に指定したいときっていうのはあります。Google日本語入力は便利で、

  • 『きょう』→『2018年12月17日』
  • 『いま』→『午前0時10分』

のように、動的に日付や時刻を出力してくれる機能があります。

だがしかし。僕が求めているフォーマットではないのです…(´・ω・`)

僕は曜日までほしいのです。具体的には、『2018年12月17日(月)』と出てほしいのです…。

それ辞書ツールでできるんじゃ?

具体的に『1217』→『2018年12月17日(月)』と変換する辞書を作っておけばいいんじゃね?

それなら、プログラムでできそうですね!

各種コマンドの実行順序はこんな感じ。

# package.json作成
npm init -y
# 依存関係の解決
npm i --save-dev @types/moment @types/node moment ts-node typescript
# ファイル作成
vim index.ts

# 結果を出力
npx ts-node index.ts > date-dict.txt

ファイルに書き込むの、fsモジュール使ってももちろんいいんですけど、標準出力で時間をケチる。

index.tsはこれ

import * as moment from 'moment'
import 'moment/locale/ja';

class Main {

    constructor() {
        // どの期間作るか?
        let from = moment()
        let due = moment(from).add(1, 'years')

        // 一日ずつループ
        let dictData = []
        while (from.isBefore(due)) {
            let read = this.hankakuToZenkaku(from.format('MMDD'))
            let formatted = from.format('YYYY年MM月DD日(ddd)')
            dictData.push(this.createLineOfDict(read, formatted))

            from.add(1, 'day')
        }
        console.log(dictData.join('\n'))
    }

    /**
     * @see "https://qiita.com/yamikoo@github/items/5dbcc77b267a549bdbae"
     */
    hankakuToZenkaku(input: string) {
        return input.replace(/[A-Za-z0-9]/g, function(s) {
            return String.fromCharCode(s.charCodeAt(0) + 65248);
        });
    }

    createLineOfDict(read: string, word: string) {
        let hinshi = '名詞'
        return `${read}\t${word}\t${hinshi}\t`
    }

}

new Main()

コマンドを実行していくと最終的にdate-dict.txtが出来上がります。このファイルをGoogle日本語入力の辞書ツールへインポート。

結果

十分じゃないですかね!

現在の位置:サブスレッド ホーム > 技術ブログ > Google日本語入力で日付入力