内容
ほとんどすべてのプログラムは時間を使用します。 Python では、このために別のライブラリが開発されています – 時間さまざまなアクションを実行するために使用されます。 機能させるには、まずコードの先頭で宣言する必要があります。 この行はこれに使用されます。
インポート時間
このモジュールを実際に正しく使用する方法について、さまざまなオプションを考えてみましょう。
エポックからの秒数の決定
このタスクを達成するために、関数があります 時間() パラメータを取らない。 その戻り値は、1 年 1970 月 XNUMX 日から経過した秒数です。Python では、この時間をエポックの開始と呼びます。 少なくとも Unix ファミリーのオペレーティング システムでは。
Windowsに関しては、日付は同じですが、この日付より前の負の値に問題がある可能性があります。
使用されるタイムゾーンは UTC です。
インポート時間
秒 = time.time()
print(“エポックからの秒数 =”, 秒)
この関数の複雑さは、日付を正確に表示するのではなく、秒数のみを表示することです。 誰もが知っているフォーマットに変換するには、正確な情報を使用する必要があります。 このために、関数が使用されます time.ctime()。
日付、時刻を通常の形式で返す
通常の形式で時間を返すには、メソッドがあります time.ctime()。 括弧は、エポックの開始から経過した秒数を示す変数または数値を示します。 このメソッドは、日付、年、時間数、分、秒、曜日など、すべての日付と時刻の特性を返します。
この関数は、引数なしでも使用できます。 この場合、現在の日付、時刻などを返します。
これを示すコード スニペットを次に示します。
インポート時間
print(time.ctime())
23年10月18日火曜日23:2018:XNUMX
最後の行は、Python インタープリターが実行されているコンソールに出力されるものです。 このメソッドは、受信した秒数をユーザーが使い慣れた形式に自動的にフォーマットします。 確かに、上記のすべての要素はめったに使用されません。 原則として、時刻のみ、または今日の日付のみを取得する必要があります。 このために、別の関数が使用されます – strftime()。 しかし、それを検討する前に、クラスを解析する必要があります time.struct_time.
クラス time.struct_time
これは、さまざまなメソッドで受け入れることができる引数のカテゴリです。 オプションはありません。 名前付きインターフェースを持つタプルです。 簡単に言えば、このクラスの要素には、名前とインデックス番号の両方でアクセスできます。
以下の属性で構成されます。
注意! 他の多くのプログラミング言語とは異なり、ここでは月の範囲は 1 から 12 ではなく、11 から XNUMX です。
特定の形式を返す
関数の使用 strftime() 年、月、日、時、分、秒を個別に取得し、テキスト文字列に返すことができます。 次に、関数を使用してユーザーに印刷できます () を印刷 またはその他の方法で処理されます。
引数として、関数は、このモジュールの他の関数によって返される値を取る任意の変数を取ることができます。 たとえば、必要なデータを抽出する現地時間を転送できます (後で説明します)。
これを行うコード スニペットを次に示します。
インポート時間
named_tuple = time.localtime() # struct_time を取得
time_string = time.strftime(«%m/%d/%Y, %H:%M:%S»,named_tuple)
印刷 (time_string)
このコードを実行すると、現在の日付と時刻が表示されます。 要素の形式と順序は変更できます。 それらは次のとおりです。
- %Y は年です。
- %m は月です。
- %d – 日。
- %H – 時間。
- %M – 分。
- %S – 秒。
したがって、出力が月と日のみになるようにすることができます。 これを行うには、年を表示するコマンドを実行する必要はありません。 つまり、上記の式を引数 %m/%d として記述し、それだけです。 またはその逆、%d/%m。
実際、文字列リテラルの数ははるかに多くなります。 以下は、それらが詳細に説明されている表です。
特定の秒数だけスレッドを延期する
このために、関数が使用されます 寝る (). プログラミングタスクのかなり大きなブロックが時間の経過に関連しています。 次のステップを一定時間延期しなければならない場合があります。 たとえば、処理に一定の時間がかかるデータベースとやり取りする必要がある場合などです。
メソッドは引数として、アルゴリズムの次のステップを遅らせる秒数を表す値を使用します。
たとえば、このスニペットでは、遅延は 10 秒です。
インポート時間
一時停止 = 10
print(«プログラムが開始されました…»)
time.sleep(一時停止)
print(str(一時停止) + » 秒が経過しました。»)
その結果、次のようになります。
プログラムが開始されました…
10秒経過。
出力からわかるように、プログラムは最初に開始したことを報告します。 そしてXNUMX秒後、彼女は今回は過ぎたと書いた.
この関数を使用すると、一時停止の期間をミリ秒単位で指定できます。 これを行うには、関数引数の小数値を使用します 睡眠。 たとえば、0,1 です。 これは、遅延が 100 ミリ秒になることを意味します。
現地時間を取得する
localtime() 関数を使用して、プログラムは特定のタイム ゾーンでのエポックの開始からの秒数を取得します。
わかりやすくするためにコード例を示しましょう。
インポート時間
結果 = time.localtime(1575721830)
print(“結果:”, 結果)
print(«nгод:», result.tm_year)
print(«tm_hour:», result.tm_hour)
エポックからの秒数に基づいて UTC で struct_time を返します
このタスクは time.gmtime() を使用して達成されます。 方法。 例を挙げるとより明確になります。
インポート時間
結果 = time.gmtime(1575721830)
print(“結果:”, 結果)
print(«nгод:», result.tm_year)
print(«tm_hour:», result.tm_hour)
この一連のアクションをオンにすると、時間、年、タイムゾーンに関連する一連の要素が表示されます。
現地時間への自動変換を使用して、エポックの開始からの秒数を返します
このようなタスクに直面した場合、メソッドを使用して実装されます mktime()、 構造時間. その後、関数の逆のアクションを実行します 現地時間()。 つまり、ローカル タイム ゾーンに基づく時間を、エポックの開始から経過した秒数に変換し、タイム ゾーンに合わせて調整します。
mktime() と localtime() 関数は密接に絡み合っています。 このコード スニペットは、これを明確に示しています。 それがどのように機能するかをより深く理解するために、それを見てみましょう。
インポート時間
秒 = 1575721830
# struct_time を返す
t = time.localtime(秒)
print(«t1: «, t)
# struct_time から秒を返す
s = 時間.mktime(t)
print(«ns:», 秒)
変数が 秒 エポックから 1575721830 秒が割り当てられています。 まず、プログラムはこの値に基づいて正確な日付、時刻、およびその他のパラメーターを取得し、それを変数に入れます t、その内容を変数に変換します s.
その後、改行を打って、コンソールに秒数を表示します。 seconds 変数に割り当てられたのと同じ数値になることが確認できます。
struct_time を参照する 9 つの数値から日付を出力
年、月、日、曜日、およびその他の値を表す 9 つの数値があり、それらを XNUMX つの文字列に結合する必要があるとします。 このために、関数が使用されます asctime(). 彼女は受け入れるか、準備ができています struct_time、 または同じことを表す9つの値の他のタプル。 その後、日付、時刻、およびその他のいくつかのパラメーターである文字列が返されます。
このメソッドを使用すると、ユーザーが指定した異なるデータを XNUMX つの変数にまとめることができて非常に便利です。.
例えば、イベントへの登録に関して、ユーザが日、月、年、曜日、その他のデータを個別に指定する番組であってもよい。 その後、受け取った情報はデータベースに入力され、それを要求した別の人に発行されます。
Python 文字列に基づいて時刻と日付を取得する
ユーザーが異なるデータを指定したとします。ユーザーが入力した形式でそれらを XNUMX 行に結合し、別の変数にコピーして、そこで標準形式に再構築する必要があります。 このために、関数が使用されます time.strptime()。
この値が指定されている変数を取り、すでにおなじみの 構造時間.
わかりやすくするために、そのようなプログラムを作成します。
インポート時間
time_string = «15年2019月XNUMX日»
結果 = time.strptime(time_string, «%d %B, %Y»)
印刷(結果)
出力がどうなると思いますか? 結論を見ずに推測してみてください。 そして、答えを確認してください。
time.struct_time(tm_year = 2019、tm_mon = 6、tm_mday = 15、tm_hour = 0、tm_min = 0、tm_sec = 0、tm_wday = 5、tm_yday = 166、tm_isdst = -1)
つまり、Python で日付と時刻を操作することはまったく難しくありません。 これらの指示に従うだけで十分であり、すべてがうまくいくでしょう。 ライブラリの使用 時間 ユーザーは、次のような時間を扱うための膨大な数の機会を得ます。
- 指定した時間、プログラムの実行を中断します。
- エポックからの経過時間を秒単位で表示します。 この情報を使用して、時間を合計したり、その他の数学演算を実行したりできます。
- 便利なフォーマットに変換します。 さらに、プログラマ自身がどの要素をどの順序で表示するかを設定できます。
他にも多くの可能性がありますが、今日は最も基本的なものを分析しました。 それらは、何らかの形で時間とともに機能するほとんどすべてのプログラムで役立ちます。 幸運を。