質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

2回答

456閲覧

pythonでの二つの年月日の日数の差と二つ目に書かれた年月日の曜日を出力するプログラム作成

k.lolo

総合スコア4

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2022/05/23 11:37

編集2022/05/24 00:22

二つの年月日の日数の差と二つ目に書かれた年月日の曜日を出力するプログラムを組んでます(うるう年に関しては考えないこととします。)

19810101
20220523

と入力したときに(15107, 'Monday')と出力したいのですが、なぜか(15352, 'Sunday')と出力されてしまいます。どうしてでしょうか?よろしくお願いいたします。
(閏年は考慮しないということでお願いいたします。 計算するところが間違えてるんだと思いますがどこが間違えてるかわかりません。お分かりになられる方いませんか?よろしくお願い致します。)

year_month_day = input() year_month_day = int(year_month_day) today_year_month_day = input() today_year_month_day = int(today_year_month_day) def calc_daycount_and_dayofweek(year_month_day, today_year_month_day): month = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30,31] day_week = ['Saturday', 'Friday', 'Tursday', 'Wednesday', 'Tuesday', 'Monday', 'Sunday'] quotient1 = year_month_day // 100 // 100 quotient2 = today_year_month_day // 100 //100 remainder1 = year_month_day % 100 remainder2 = remainder1 % 100 remainder3 = today_year_month_day % 100 remainder4 = remainder3 % 100 if quotient1 > quotient2: daycount = (quotient1 - quotient2) * 365 + (sum((month[:remainder2])) + remainder1) -1 elif quotient2 > quotient1: daycount = (quotient2 - quotient1) * 365 + (sum((month[:remainder4])) + remainder3) -1 dayofweek = day_week[- daycount % 7] return (daycount, dayofweek) def output_result(days_weeks): print(days_weeks) days_weeks = calc_daycount_and_dayofweek(year_month_day, today_year_month_day) output_result(days_weeks) コード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k.lolo

2022/05/23 12:02

閏年は考慮しないということでお願いいたします。 計算するところが間違えてるんだと思いますがどこが間違えてるかわかりません。お分かりになられる方いませんか?よろしくお願い致します。
Zuishin

2022/05/23 14:15 編集

まず日付を 0 年 1 月 0 日からの述べ日数に直します。(別に基準はこの日でなくてかまいません) 述べ日数が出れば、あとは単純に引き算すれば差が出ます。 曜日は、閏年を考慮しないのであれば述べ日数を 7 で割れば出ますが、実際の曜日とはずれるので、いつを何曜日にするかを決めなければいけません。
guest

回答2

0

python

1from datetime import datetime 2import calendar 3 4def calc_daycount_and_dayofweek(year_month_day, today_year_month_day): 5 a = datetime.strptime(year_month_day, '%Y%m%d') 6 b = datetime.strptime(today_year_month_day, '%Y%m%d') 7 leapdays = calendar.leapdays( 8 (a.year+1 if a.month >= 3 else a.year), 9 (b.year if b.month == 1 or (b.month == 2 and b.day < 29) else b.year+1)) 10 return ((b - a).days - leapdays, b.date().strftime('%A')) 11 12if __name__ == '__main__': 13 days_weeks = calc_daycount_and_dayofweek('19810101', '20220523') 14 print(days_weeks) 15 16# 17(15107, 'Monday')

投稿2022/05/23 11:57

編集2022/05/23 15:05
melian

総合スコア19618

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

melian

2022/05/23 15:22

最近気が付いたのですが、downvote されても総合スコアが変化しないのですね。システム更新以前からもそうだったのかしらん?
guest

0

まずは、それら年月日から、日付型(Date型、あるいはdatetime型)の変数を生成しましょう
そうすれば、2つの日付からの引き算ができるようになります
また、そこから曜日を取得することもできます

投稿2022/05/23 11:53

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問