Mac - ターミナルにて2ヶ月前のカレンダーが表示されます

Macにある「ターミナル」というアプリについて。

例えば「$cal」と入力をした場合、カレンダーが反映されますが

私が入力をすると、確かにカレンダーが表記されますが、2ヶ月前のカレンダーが表示されます。

又、「$cal 2025」と入力をした場合、1月から順番に年間カレンダーが表示されるのが標準かと思われますが、先頭のカレンダーの月は「PM」と表示され、続けて次月カレンダーは文字化けしております。その次から1月と順番にカレンダーが表記されています。


これは一体何が問題で、どうすれば改善されるのでしょうか?

尚、Macの日時は問題なく、カレンダーのアプリ上などもしっかりと当日を指しております。


ターミナルについては全く使用したこともなく、知識はありませんので

可能な範囲で簡易にご説明していただけると助かります。

* タイトルを変更しました。 Apple Inc.

MacBook Pro 13″, macOS 15.4

投稿日 2025/04/10 01:39

返信
スレッドに付いたマーク ランキングトップの返信

投稿日 2025/04/10 09:00

Parallels Desktop 18 上の Sequoia 15.4 で検証したところ、


これは問題なしで、

LANG=en_US cal
LANG=en_US cal 2025


これは問題あり

LANG=ja_JP cal
LANG=ja_JP cal 2025


また、Terminal の設定 > 詳細 で「起動時にロケール環境変数を設定」が OFF だと問題なしで、システムの言語設定が日本語 (ja_JP) の場合、「起動時にロケール環境変数を設定」が ON だと問題あり。


ということで、ロケール環境変数が正しく扱われないバグのようです。

ちなみに date コマンドもおかしいですね。


フィードバックしましょう。

フィードバック - macOS - Apple(日本)


返信: 26
スレッドに付いたマーク ランキングトップの返信

2025/04/10 09:00 yukizy への返信

Parallels Desktop 18 上の Sequoia 15.4 で検証したところ、


これは問題なしで、

LANG=en_US cal
LANG=en_US cal 2025


これは問題あり

LANG=ja_JP cal
LANG=ja_JP cal 2025


また、Terminal の設定 > 詳細 で「起動時にロケール環境変数を設定」が OFF だと問題なしで、システムの言語設定が日本語 (ja_JP) の場合、「起動時にロケール環境変数を設定」が ON だと問題あり。


ということで、ロケール環境変数が正しく扱われないバグのようです。

ちなみに date コマンドもおかしいですね。


フィードバックしましょう。

フィードバック - macOS - Apple(日本)


2025/05/20 17:55 yukizy への返信

/usr/share/locale/の下のファイルをいじろうとしたら権限がないので書きかえできなかったため、~/.zshrcの中に次の二つを書いて解決するまで使うことにしようと思います。ただ、ターミナルを開いたときに「Restored session: #午後」と言われるのは解決できませんが、単独で各コマンドを実行したときは想定通り動くので、毎回コマンド実行時に打ちたくないときには役立つかなあと。


alias date="LANG=C date"

alias cal="LANG=C cal"

2025/04/10 22:29 yukizy への返信

バグは Apple に直してもらうとして、当面は cal や date など日付を扱うコマンドは環境変数付きで実行する、、、ということでしょうかね。


LANG=en_US.UTF-8 cal
LC_TIME=en_US.UTF-8 cal
LC_TIME=C cal


あと、書き忘れましたが、Sequoia 15.3.x では問題ないようです。15.4 の問題。


2025/04/16 07:12 HedgeHogApple への返信

最初のコメントで正常だと言いましたが,OS15.3.2での確認でした。確かに15.4ではおかしくなりました。

皆様のコメントを見て確認しましたが

/usr/share/locale/ja_JP.UTF-8/LC_TIMEと/usr/share/locale/ja_JP/LC_TIMEに余分なコメントが入っておりこれが悪さをしていることが確認できました。

本来

AM

PM

であるべきなのに

#午前

AM

#午後

PM

と余計なコメント行(#)を加えており,このためこれ以降が二行ずれた形で表示されるため,2月ずれるおかしな表示となっています。

明らかなバグでした。最初のコメントで混乱させてしまい申し訳なかったです。

ちなみに

 ja_JP.eucJP/LC_TIME

ja_JP.SJIS/LC_TIME

は正常でした。


ということで,設定の問題ではなく,表示形式を規定しているファイルのバグで確定です。

2025/04/16 03:28 yukizy への返信

上記の方と内容は同じですが、ターミナルが使っている言語や地域の設定がずれているとかですかね。


ターミナルで以下のコマンドを打っていただくと、どうなりますでしょうか。


locale


通常であれば、「ja_JP.UTF-8」が出てくるのですが、違うのが出たら、それが原因かもしれません。


必要に応じて、以下をターミナルで叩いて、ja_JP.UTF-8にすると改善されますかね。


export LC_TIME=ja_JP.UTF-8 >> ~/.zshrc (←ターミナルがzshの場合)


export LANG=ja_JP.UTF-8 >> ~/.zshrc (←ターミナルがzshの場合)


export LC_TIME=ja_JP.UTF-8' >> ~/.bash_profile (←ターミナルがbashの場合)


export LANG=ja_JP.UTF-8' >> ~/.bash_profile (←ターミナルがbashの場合)


※「export」と「=ja_JP.UTF-8'」の間は、ja_JP.UTF-8'にしたいものを選択。

 例えば、ターミナルで、localeで調べた時に、「LC_TIME」が「ja_JP.UTF-8'」でなければ、

 「export」と「=ja_JP.UTF-8'」の間は、「LC_TIME」になる。

2025/06/18 00:51 yukizy への返信

以下のようにすると dateコマンドやcal コマンドは正しく表示されるようになると思います。

以下の作業は、macOS(Sequoia 15.5で確認)のバグを回避しているだけであり、macOS自体

のlocaleに関する設定ファイルそのものが修正されているわけではありません。

シェルはデフォルトの /bin/zsh を前提にしています。


ターミナルを開き、以下のコマンドを順次実行します(%はプロンプトなので入力しません)。

例えば、二つ目の % mkdir ~/ja_JP.UTF-8 は % を除いた

          mkdir ~/ja_JP.UTF-8

を実行します。


以下の【実行するコマンド】の文字列の区切りには何個かのスペースを入れて見やすくしていますが

動作上問題ありません。

%を除いた各行を順次コピーしてターミナルに貼り付けてエンターキーを押下してください。


--【実行するコマンド】------------------------------------------------------------------------------------

% cd   ~
% mkdir ~/ja_JP.UTF-8
% sudo cp /usr/share/locale/ja_JP.UTF-8/LC_TIME ~/ja_JP.UTF-8
    ※ 上記で、sudoを使用する際、ログインパスワードが求められます。
% sudo chmod a+w ~/ja_JP.UTF-8/LC_TIME
% open -t ja_JP.UTF-8/LC_TIME


LC_TIMEのファイル内容(右)の42行目〜45行目を左のように書き換えて保存します。

結果的に行数は2行少なくなります

テキストエディットではトリプルクリックすると行全体が選択されるのでトリプルクリック後デリートすれば

行全体が削除されます(下図ではcotエディタを使用した画面なので行番号が表示されています)。



% echo    'export PATH_LOCALE=$HOME'    >>    .zshrc
% source .zshrc

--------------------------------------------------------------------------------------


この後、dateコマンドやcalコマンドを実行してみてください。うまくいかなかったらすみません。


* 一部編集いたしました。 Apple Inc.

2025/04/10 02:10 yukizy への返信

バグでは?

誰も使ってない?

まず上に出る月は間違ってます。

例えば、

cal

($calではありません。ターミナルのシェルは何をお使いですか?macのおすすめのzshなら%と思いますが)

とした場合2月 2025と出てカレンダーが出ますが、そのカレンダーは実際には4月のものです。

cal -y 2025

とした場合には最初のはPMとなってますが、これは1月のカレンダーになってます。上に出る月が間違ってるだけで、そのことに留意すればカレンダーは正しいです。

なお、オプションの付け方などは、

man cal

とすれば出てきます。でも、これも、説明通りには動かないものが多いようですが。

2025/04/16 06:26 HedgeHogApple への返信

> ターミナルで以下のコマンドを打っていただくと、どうなりますでしょうか。

> locale

> 通常であれば、「ja_JP.UTF-8」が出てくるのですが、違うのが出たら、それが原因かもしれません。

> 必要に応じて、以下をターミナルで叩いて、ja_JP.UTF-8にすると改善されますかね。


いや、逆です。ja_JP.UTF-8 だと正しい結果が得られません。


このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

Mac - ターミナルにて2ヶ月前のカレンダーが表示されます

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。