パソコン仕事5倍塾
35,000人を指導した東大卒・元日本IBM社内講師が直伝
MENU
沖津さんの投稿
(投稿ID: 5366)
小川 慶一さんのコメント
(コメントID: 7726)
沖津さんのコメント
(コメントID: 7736)
(コメントID: 7738)
new_dt = dt + timdelta_object
(コメントID: 7743)
Captcha:
たった1ヶ月で人生が劇的に変わりました
佐藤信さん
役員クラスの方から高い評価を受けるようになりました。
佐賀県 - 岩本徹さん
今までまったく知らなかったショートカットキーを使いまくっています。
東京都 - 鷹觜慶さん
年齢60才間近、営業で外回りの時間が多い私でも退社時間が1-2時間程度早くなりました。
東京都 - 宗内隆明さん
受講前もすでにパソコン得意でしたが、そんな私でも受講して本当に良かったと思えた講座です。
東京都 - 佐伯とも子さん
ここまで包括的に仕事に役立つ深い学びを受けれた講座は初めてでした
東京都 - 飯田倫子さん
2025年05月07日 08:26
2025年05月07日 08:13
2025年05月04日 20:00
2025年04月28日 08:52
2025年04月22日 05:41
2025年05月09日 08:58
2025年05月08日 23:23
2025年05月08日 23:06
2022年02月24日 10:59
表示できる投稿はありません。
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
2022年02月02日 00:00
2022年02月02日 03:00
2022年02月02日 06:00
2022年02月02日 09:00
2022年02月02日 12:00
2025年04月15日 11:30
2025年04月08日 16:30
2025年04月07日 16:30
2025年04月04日 15:45
2025年03月27日 13:30
2025年02月04日 08:51
2025年02月03日 12:58
2024年11月27日 11:48
2024年11月25日 12:07
2024年11月17日 09:51
2025年03月26日 22:33
2025年03月26日 22:12
2025年03月24日 22:28
2025年03月19日 20:10
2025年03月18日 20:52
2025年04月16日 08:30
2025年03月18日 09:07
2025年03月18日 09:06
2025年03月15日 13:23
2025年02月26日 16:37
2025年04月02日 21:01
2025年04月02日 20:47
2025年04月02日 20:37
2025年04月01日 22:03
2025年04月01日 21:27
2025年04月16日 08:32
2025年03月18日 09:10
2025年03月18日 09:09
沖津さんの投稿
(投稿ID: 5366)
疑問が出てきたので質問します。
3日前の日付を作る場合
以下の2パターンで書いてみたところ
結果はどちらも同じ3日後の日付を作れました。
❶ new_dt = dt + timedelta(days=-3)
❷ new_dt = dt - timedelta(days=3)
わたしは引き算なのだから
❷の書き方の方が良いのかなと思ったのですが…
ネットで調べてみると❶の方法で書かれている方が多い印象でした。
❶の書き方の方が好ましいのでしょうか?
それとも、どちらの書き方でもOKなのでしょうか?
小川 慶一さんのコメント
(コメントID: 7726)
> ❶の書き方の方が好ましいのでしょうか?
せっかくなので、今日の学びを活かしてみたいです。
「❷の書き方支持」ということであれば、あえて、「❶の書き方支持」の立場になってみて、その理由を考えて書き出してみてください。
あと、ついでに、せっかくなので、python のソースコードで datetime の __add__, __sub__ メソッドの実装を眺めてみてください。
沖津さんのコメント
(コメントID: 7736)
学びのヒントを出していただきありがとうございます。
❶ new_dt = dt + timedelta(days=-3)
❷ new_dt = dt - timedelta(days=3)
「➊の書き方支持」立場で考えると…
timedelta(days=-3) と書く方が
・減らしたいもの … days
・どれだけ減らすか? … -3
この2つか( )でまとまっているので
パッと見た時に何をどうしたいのか?が
わかりやすいと思いました。
୨୧・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・୨୧
datetimeのソースコードも眺めてみました!
何が書いてあるのかはさっぱりだったのですが💦
じーーーっと眺めていると
マイナス記号はtimedeltaの()の中でしか
使われていないことに気が付きました。
逆にtimedeltaの()以外の部分の計算は
プラス記号が使われていたので
だんだん❶の書き方の方が良い気がしてきました。
小川 慶一さんのコメント
(コメントID: 7738)
>・減らしたいもの … days
>・どれだけ減らすか? … -3
>
>この2つか( )でまとまっているので
>パッと見た時に何をどうしたいのか?が
>わかりやすいと思いました。
ですね。
というか、 timedelta オブジェクト内にそこまでの情報を含められれば、 datetime との演算の式を作るときに、プラス「 + 」にするか、マイナス「 - 」にするか、と悩む必要がなくなります。
ある程度のボリュームのコードになってくると、 datetime と timedelta との演算は、 timdelta オブジェクトを生成した直後になるとは限りません。
timedelta オブジェクトを作るタイミングは、コードのかなり前の方かもしれません。
あるいは、呼び出された関数内で生成される可能性もありそうですね。
その時、 timedelta オブジェクトの方が正負まで含めた情報を持つようにして
最終的に datetime との演算をする部分では、以下のように + 演算子で書くことにする
とする方が実装がシンプルで済みます。
と、この説明でさっぱりしっくり来るでしょうか?😆
ソースコードは、最初は、読める範囲で、で構いません。
文法知識と実装の経験がついてくると、だんだんと、より読めるようになっていきます😊
「読んでみよう」という意図と、「読んでみた」という体験が重要です。
沖津さんのコメント
(コメントID: 7743)
ありがとうございます😊
datetime との演算の式を作るときに、プラス「 + 」にするか、マイナス「 - 」にするか、と悩む必要がなくなります。
☝これもコードを書くときにラクになるほうがいいので納得です!
あとから修正する場合も
❶の書き方の方が探しやすいと思いました。
ソースコードについても
よくわからないからといってすぐ閉じずに(笑)果敢にながめるようにします。
ありがとうございました😊