| 2023/04/29(Sat) 10:25:48 編集(投稿者)
■No13752に返信(いぶけんさんの記事) > 桐10sです > > csvで読み込んだ下記のような日時データがあります。 > 読み込んだ西暦年は省略されていますが、基本的に現在年であって欲しいです。 > > 1 1/ 1 11: 0:38 > 2 1/ 7 17:37:12 > 3 1/ 9 9:20:59 > 4 1/ 9 9:33:47 > 5 1/10 9:57: 6 > 6 1/10 13:40: 3 > 7 1/12 13: 9:49 > 8 1/13 15:34:26 > 9 1/14 18:32:37 > > csv読み込み時は、文字列型 > これを日時型に変換すると、不思議なことに > 1-4までは2001年 > 5-9までは2023年になります。 > > 考えられる理由はなんでしょうか?
年を省略した日付文字列は mm/dd hh:mm:ss と解釈するのが普通ですね。
文字列 桐の解釈 日時型への変換結果 1/ 1 11: 0:38 → 1/111 という日付(mm/dd)は不正なので 2000 + 1/ 1/11 0: 0:38 → 2001/ 1/11 0: 0:38 1/ 7 17:37:12 → 1/717 という日付(mm/dd)は不正なので 2000 + 1/ 7/17 0:37:12 → 2001/ 7/17 0:37:12 1/ 9 9:20:59 → 1/99 という日付(mm/dd)は不正なので 2000 + 1/ 9/ 9 0:20:59 → 2001/ 9/ 9 0:20:59 1/ 9 9:33:47 → 1/99 という日付(mm/dd)は不正なので 2000 + 1/ 9/ 9 0:33:47 → 2001/ 9/ 9 0:33:47
1/10 9:57: 6 → 1/10 という日付(mm/dd)は適正なので当年(2023)追加 → 2023/ 1/10 9:57: 6 1/10 13:40: 3 → 1/10 という日付(mm/dd)は適正なので当年(2023)追加 → 2023/ 1/10 13:40: 3 1/12 13: 9:49 → 1/12 という日付(mm/dd)は適正なので当年(2023)追加 → 2023/ 1/12 13: 9:49 1/13 15:34:26 → 1/13 という日付(mm/dd)は適正なので当年(2023)追加 → 2023/ 1/13 15:34:26 1/14 18:32:37 → 1/14 という日付(mm/dd)は適正なので当年(2023)追加 → 2023/ 1/14 18:32:37
↑上のように、1/111,1/717,1/99といった月日(mm/dd)は存在しないので、yyyy を2001と解釈したのだと思いますよ。
いずれにしても、日時型というのは yyyy/mm/dd hh:mm:ss というのが基本なので、
年を省略した日付文字列を無理に変換させると期待通りの結果が得られないということだと思いますよ。 ・・・・・・・・・・・・・・・・・・・・ p.s.
正しく変換できない日付文字列のmm/ddのddをゼロ埋め(ゼロ詰め)すれば、ちゃんと変換できるようですよ!
1/ 1 11: 0:38 → 1/01 11: 0:38 1/ 7 17:37:12 → 1/07 17:37:12 1/ 9 9:20:59 → 1/09 9:20:59 1/ 9 9:33:47 → 1/09 9:33:47 ↑ mm/ddのddをゼロ埋め(ゼロ詰め)する
p.p.s.
> 集計がうまくいかず色々調べて見ました。 ・・・・・・・・・ ↑ 具体的な情報が不足していますので第三者には理解不能です。
> #年 と #月 で切り取ってみたところ、2月も含む全てが1989年1月になっていました。 ・・・・・・・・・・・・・・・・ ↑ これに関しては想像力を最大にしてみましたが、見当がまったく付きませんです。
|