5倍速!メールマガジン
外部アカウントで登録
受講生の声
新着の講座投稿
新着の講座コメント
新着のノート投稿
投稿一覧へ新着のノートコメント
表示できる投稿はありません。
サイト運営者紹介
小川 慶一講師/教材/システム開発者紹介
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
表示できる投稿はありません。
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
ゆみこさんの投稿
(投稿ID: 5478)
># 時刻の情報は持たないので、以下の演算は無効です
>today_three_am = today + timedelta(hours=3)
私は動画内のご説明を「hoursの値に限らず無視される」という意味で受け取っていました。
ですが、「timedelta(hours=3)」を「timedelta(hours=240)」にして試したところ、10日プラスされました。
小川先生が動画で説明されていたのは、「timedelta(hours=3)」のように「hoursの値が小さいときに限った」お話だったのでしょうか?
小川 慶一さんのコメント
(コメントID: 8150)
これは、時間差を表現するためのオブジェクトです。
ここが分かれば、あとは、「エクセル VBA で Integer型や Long 型に 0.3 とか 3.14 のような少数を含めた値を加算しようとしたらどうなるか」といった議論と同じです。
datetime.date型にdatetime.timedelta型のオブジェクトを加算しても、日付部分だけが取り込まれ、時刻部分は無視されます。
datetime.date型は日付のみを表現するためのものであり、時刻情報を持たないからです。
この挙動は、datetime.date型が日付のみを扱うためのものであり、時刻を含む値を加算する演算を意図していないからです。
ですから、時刻を含む値を加算する演算は設計上の問題があります。
つまり datetime.timedelta オブジェクト生成時に hours を引数とするようなコードがそもそも不適切なので、このような演算が含まれないよう、設計に十分注意してください。
ゆみこさんのコメント
(コメントID: 8155)
今回私が試したコードは、結果的にはdaysの演算だったということで理解しました。
>時刻を含む値を加算する演算は設計上の問題があります。
今回はあえて試しましたが、この点も理解しているつもりですので、きちんと注意するようにします。
datetime周り以外のことで、2点追加質問をさせてください。
<追加質問1>
こちらのサイト内の投稿でコードを書く場合は、バッククオート(```)で括るとコードブロックになるのでしょうか?
(少し調べたのですが、小川先生のサイト内での仕様について書いてあるところが見つけられませんでした。
試せる場所がないので、ここで試します)
```
from datetime import timedelta
```
<追加質問2>
今回の返信で書いていただいたサンプルコードについてです。
行コメント部分は、コンソールに出力されたものをコピー&ペーストして書いていただいた流れでしょうか?
(サンプルコード、Pycharm上で実行しました。
今回いただいたサンプルコードを拝見し、自分用のサンプルコードもできるだけきちんとした形で書くようにしたいと思いました)
小川 慶一さんのコメント
(コメントID: 8156)
プログラムをコードハイライト表示するには?のセクションを読んでみてください。
https://forum.pc5bai.com/column/tips_to_post/#code-highlight
> 行コメント部分は、コンソールに出力されたものをコピー&ペーストして書いていただいた流れでしょうか?
ですね。
ゆみこさんのコメント
(コメントID: 8158)
申し訳ありません。
Python版で試します。
今回は以上で大丈夫です。
投稿も実行も、少しずつ慣れていこうと思います。
どうもありがとうございました。