2019年3月25日

【PowerShell】日付を和暦表示するスクリプト


新元号発表まであと1週間となりましたが、PowerShellで日付を和暦表示するスクリプトを作ってみました。

#
# Get-WarekiDate.ps1
#

#パラメータ
Param($date, $time)

try{
    if (($date -eq $null) -And ($time -eq $null)){
        #両方nullなら現在の日付を取得
        $d = Get-Date
    } elseif (($date -ne $null) -And ($time -eq $null)) {
        #指定した日付
        $d = [System.DateTime]::Parse($date)
    } elseif (($date -ne $null) -And ($time -ne $null)) {
        #指定した日付と時刻
        $d = [System.DateTime]::Parse($date + ' ' + $time)
    } else {
        #それ以外はエラー
        Write-Output 'パラメータが間違っています。[日付] [時刻]を指定してください。'
        exit
    }

    $c = New-Object System.Globalization.CultureInfo("ja-JP", $true)
    $c.DateTimeFormat.Calendar = New-Object System.Globalization.JapaneseCalendar

    #和暦で表示
    $d.ToString("ggy年M月d日 HH:mm:ss", $c)
}
catch [System.FormatException]{
    Write-Host "日付の指定が間違っています。"
    Write-Host $_
}
catch{
    Write-Host $_
}
少し解説すると、まず、下準備としてCultureInfoクラスで"ja-JP"のインスタンスを作成し、カレンダーを和暦(JapaneseCalendarクラス)に置き換えます。そして、DateTimeオブジェクトのToStringで、第2引数にCultureInfoクラスのインスタンスを指定すれば和暦として表示されます。

Windowsでは和暦情報を下記のレジストリを使って管理しているのですが、PowerShellで和暦表示させる場合もこの情報を取得してきています。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese\Eras
PS C:\work\PowerShell> Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese\Eras


1868 01 01   : 明治_明_Meiji_M
1912 07 30   : 大正_大_Taisho_T
1926 12 25   : 昭和_昭_Showa_S
1989 01 08   : 平成_平_Heisei_H
PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese\Eras
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese
PSChildName  : Eras
PSDrive      : HKLM
PSProvider   : Microsoft.PowerShell.Core\Registry
ここには元号が始まった日と表記方法が格納されています。
おそらく4月1日以降マイクロソフトから更新プログラムが公開され、平成の下に新元号のデータが追加されることになると思います。


では、実際に表示させてみます。

PS C:\work\PowerShell> .\Get-WarekiDate.ps1
平成31年3月25日 21:54:10
パラメータに何も指定しない場合は、現在の日時が和暦表示されます。

PS C:\work\PowerShell> .\Get-WarekiDate.ps1 1980/3/25
昭和55年3月25日 00:00:00
パラメータに日付を指定すると、指定した日付が和暦表示されます。

PS C:\work\PowerShell> .\Get-WarekiDate.ps1 1912/7/30 22:32
大正1年7月30日 22:32:00
パラメータに日付と時刻を指定すると、指定した日時が和暦表示されます。


4月1日、どんな元号となるのか楽しみです。


<参考>
西暦と和暦を変換するには?:.NET TIPS - @IT
アプリケーションの新元号対応 | Microsoft Docs
DateTime.ToString Method (System) | Microsoft Docs
CultureInfo Class (System.Globalization) | Microsoft Docs
JapaneseCalendar Class (System.Globalization) | Microsoft Docs


2019年2月24日

【Mac】インストールを完了できませんでした

今日、私が持ってるMac Book Air のBluetoothのバージョンを知りたくて久々に電源を入れたところ、いきなりアップデートらしきものが始まりました。

あれっ、なんかアップデート始まったなぁ・・・なんて思っていると、



macOSのインストールを完了できませんでした。

えぇぇぇ、マジでぇぇぇ!!!

このあと何回か再起動も試してみたものの、そのたびにこのメッセージが出てきてどうすることも出来なくなってしまった。

ガーン!

以前もOSをHigh Sierraにアップデートしたときに失敗してどうにも復旧することが出来なくなってしまい、泣く泣くクリーンインストールした記憶があるのだが、まさか今回もクリーンインストールなのか!?

Xamarinとか開発環境をまた一から構築しないといけないのかよ!

そんな不安が一瞬頭をよぎったが、ネットで調べてみると案外簡単に元に戻せることが分かり、同じように試してみたのだが。。。

2019年2月13日

【注意】Amazonを装った怪しいメールが来た

どうもお久しぶりです。

今年に入って初めての投稿です。

最近というか昨年からプログラミング関係の記事を書いてなかったのですが、本日もまた全然関係ない迷惑メールの記事です。サーセン。

では、今日届いた怪しいメールを見ていただきましょう。
ただ今回、犯人は致命的なミスを犯しています!(笑)

2018年12月25日

電気ケトルの汚れはクエン酸で簡単に落ちる!

この季節、大掃除をしてるという方も多いのではないでしょうか。

私は昨日、電気ケトルの掃除を行いました。

昨年はじめてクエン酸を使って洗浄を行い、その効果に非常に驚いたのですが、残念ながら洗浄する前の写真を撮り忘れてしまったためその洗浄力をうまく伝えられませんでした。

そこで今回はしっかりとビフォアアフターを見ていただきたいと思います!

2018年10月8日

【注意】「AVアラート」と情報流出の事実。

最近、怪しいメールがこないなぁ~(←待ち望んでるのかよ!)なんて思って、昨日何気なくメールをチェックをしたところ、Gmailの迷惑メールフォルダに変なタイトルのメールが来ていました。


タイトル:AVアラート


うーん、これはネタになりそうなニオイがプンプンする!

オラなんだかワクワクしてきたぞ。笑

では、早速そのメールをご覧ください。

2018年9月2日

Online Video Converterを使ってYouTubeの動画から音声をmp3に変換してみたよ。

最近、YouTubeを見ていると「No Copyright Music」とか「Royalty Free Music」といった動画が数多く掲載されていることに気づきます。

これは「著作権なし」とか「使用料免除」といった意味になるようで、ある条件のもと自由にダウンロードして使用出来るようになっているようです。おそらくこれは音楽の作り手が作品を多くの人に使ってほしいという思いから出来たのではないかと思います。ソフトウェアの世界でいうフリーソフトウェアのようなものかもしれません。

今回、そういった動画から音声をmp3に変換するということをやってみました。

2018年8月14日

キュレーションサイトに勝手に画像を直リンされたので削除してやったよ。

今日なんですが、たまたまネットを見てたらこのブログの画像が勝手に使われているのを発見してしまいました。

vivre-media.jpというサイトなんですが、どうやらキュレーションサイトのようです。

そしてこれが問題の無断転載のページ。

https://vivre-media.jp/5498

私の『【100均】方眼ノートを買うならセリアに行けぇ~!』という記事から画像を勝手にパクってます。しかも直リンクで。転載元の記述もありません。一応、引用として画像のリンクアドレスが掲載されています。ただ、これだとどこのサイトから引っ張ってきたか分かりませんので引用とは言えませんね。そもそも画像の直リンクはマナー違反です。

それでちょっと頭に来たんで問い合わせフォームから抗議しようかと思いましたが、なんか面倒なのとトラブルに巻き込まれたら嫌だなというのがあったんで手っ取り早く画像を削除してやりました。

これでもう画像は表示されなくなります。

問題のサイトもこうなりました。

なんか「進入禁止」マークみたいなのが表示されちゃってますね。笑

最近はこういうキュレーションサイトばかりで困ります。検索かけても有益な情報が見つけられなくて。それにしても2年ぐらい前にWELQ問題でキュレーションサイトがかなり叩かれてましたがいまだに無くならないですね。ほんとこういうサイトって邪魔なんで検索結果に出てきてほしくないんですよね。なんとかならないかと思うのですが、Googleの今の検索アルゴリズムでは排除するのはなかなか難しいようですね。

そうするとあとは自分で出来る限りの対策をするしかないです。

私は先ほどの画像に関して「透かし」を入れるという対策をしました。

これで完全に転載されないとは言い切れませんが、ある程度の抑止力にはなると思います。


<関連記事>
【PowerShell】画像に透かしを入れるスクリプト
【PowerShell】画像に半透明の透かし文字を入れるスクリプト