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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

541閲覧

python 日時の時間を比較し処理を実施するか判定する

退会済みユーザー

退会済みユーザー

総合スコア0

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2018/05/14 01:34

お世話になります。高校生で初心者です。
現在時刻から1時間30分以内に A という処理を既に実施している場合、処理をスキップさせたいです。

例えば現在2011年1月1日AM 1 時 11 分11秒 だとします。プログラムを一回走らせ A という処理を走らせました。
2011年1月1日AM 2 時 41 分11秒までは もうプログラムAをスキップさせたいです。
2011年1月1日AM 2 時 41 分11秒以降になったら、もう一度プログラムAを走らせたいです。

また、コマンド(例えばスペースが三回連続)で押されるまで、ループをして処理を走らせていたいです。
ソースではendと入力されると処理が抜けます。

説明が拙い為、コメントで補足させていただきます。
宜しくお願いします。

ためしたこと

import datetime while True:  # 現在の日付と日時を取得する  date_yyyy_mm_dd_hh_mm_ss= datetime.datetime.now()# 2018-05-14 09:59:07.812884  print("現在時刻:",date_yyyy_mm_dd_hh_mm_ss)  # 現在より30分後の未来処理開始時刻を設定する  # 現在が未来処理開始時刻よりも未来であれば、  if data_future_set < date_yyyy_mm_dd_hh_mm_ss    #処理Aを実行する      ここは省略します    #新しい未来処理開始時刻を設定する    data_future_set = date_yyyy_mm_dd_hh_mm_ss  str = input() if str == 'end': print('break!') break

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

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

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

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

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

coco_bauer

2018/05/14 04:54

やりたいことは、「キーボードから'end'以外の入力があったら処理Aを実行する。但し、90分以内に処理Aが実行されてたなら処理Aを実行しない。」と要約できますか。質問の本文には”1時間30分”、コードには"現在より30分後"と書かれているので、どのような動作を望んでいるのか十分に理解できていません。
退会済みユーザー

退会済みユーザー

2018/05/14 05:14

お世話になります。大変わかりずらい質問で申し訳ありませんでした。まずキーボードから'スペースキーを三回たたいたら'処理を抜けます。また90分以内に処理Aが実行されていたなら処理Aは実行しない。という事です。ぐるぐるループしていますが、スペースキーを三回たたいたら処理を抜けるイメージです。宜しくお願いいたします
guest

回答1

0

「# 現在より30分後の未来処理開始時刻を設定する」のみ処理を記述していないため、
この部分の実装方法を質問しているものとして回答します。

時刻はdatetime型でとっているため、四則演算する関数が用意されています。
以下のような感じです。

python

1do_time = current_time + datetime.timedelta(minutes = 90)

回答が的を外しているかもしれないので、一応それらしき実装を載せておきます。
ただし、プログラム起動直後に「Task-A」を1回実行する実装になっています。
(サンプルコードでは最初の一回目に「data_future_set」未定義の状態で比較しているため仕様を適当に推測しました)
試験してないので、バグってたらごめんなさい。

python

1#! /usr/bin/env python 2import datetime 3 4def main(): 5 is_end = False 6 while is_end is not True: 7 current_time = datetime.datetime.now() 8 if not "do_time" in locals() or do_time < current_time: 9 #do Task-A 10 do_time = current_time + datetime.timedelta(minutes = 90) 11 is_end = True if input() == 'end' else False 12 13if __name__ == "__main__": 14 main()

投稿2018/05/19 17:27

Thrush

総合スコア58

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問