ホームページ システムチュートリアル Linux Python の時間処理の完全な概要

Python の時間処理の完全な概要

Jan 26, 2024 am 08:06 AM
linux Linuxチュートリアル レッドハット Linuxシステム Linuxコマンド Linux 認定 レッドハットリナックス Linuxビデオ

Python の時間処理の完全な概要

###1。概要### datetime モジュールは主に、年、月、日、時、分、秒と呼ばれる日付を表すために使用されます。カレンダー モジュールは主に、年、月、日、曜日、および日付を表すために使用されます。時間モジュールは主に時間と分に焦点を当てますが、秒という大まかな機能の観点から、3 つはそれぞれ 1 つに焦点を当てた補完的な関係にあると考えることができます。ユーザーは、さまざまな目的に応じて適切なモジュールを選択するのが便利です。

2.時間モジュールから始めましょう

時間モジュールを学習するには、まず時間に関連するいくつかの概念を知る必要があります:

(1)エポック 時間を 1,000,000 ミリ秒などのミリ秒数で表現したいとします。その場合、解決しなければならない問題があります。この 1,000,000 ミリ秒の開始点、つまり時間基準点はどこでしょうか?たとえば、あなたの身長が 1.8 メートルであると言う場合、この高さはあなたが立っている地面を指します。この時刻の基準点はエポックであり、Unix システムでは、この基準点は 1970 年 1 月 1 日の 0:00 の時点です。

(2)GMT、UTC エポックは 1970 年の開始点を表すと上で述べましたが、この 1970 年はどの基準時間と相対的なのでしょうか?一般に、これはグリニッジ標準時を基準としたものであり、GMT (グリニッジ標準時) 時間とも呼ばれ、UTC (協定世界時) とも呼ばれます。なぜ時間基準に 2 つの名前があるのでしょうか?歴史的には、GMT が最初で、次に UTC が使用されました。

UTC は現在使用されている時間標準であり、GMT は古い時間測定標準です。 UTC は原子時計に基づいて時間を計算しますが、GMT は地球の自転と公転に基づいて時間を計算します。

したがって、UTC は実際の基準時間と考えることができ、UTC からの GMT の偏差は 0 です。

実際には、私たちのコンピュータにはリアルタイムで UTC 時間を記録するハードウェア モジュール RCT が搭載されています。このモジュールは別のバッテリから電力を供給されており、電源がオフになっていても影響を受けません。

エポックの時間基準と UTC の基準を使用して、時間を正確に表すことができます。

(3)夏時間、ゾーン 時刻を正確に表すことはできますが、多くの場合、地域の実情に応じて時刻を調整する必要があります。最も一般的なのはタイム ゾーン (tzone) であり、これは誰もがよく知っていると思います。

現時点で、5:05 という時刻を言う場合、時刻を正確に表すには、どのタイムゾーンの 5:05 を追加する必要があります。

もう 1 つの時間調整は DST です。

DST は Daylight Saving Time の略で、太陽光を最大限に活用し電力消費を削減するために、さまざまな国や地域の政策や規制に応じて時間を人為的に調整することを意味します。たとえば、冬は7時に起きますが、夏は6時に起きると、夏になると人為的に時間が1時間加算され、まだ起きていると思わせることができます。 7時ですが、実際には1時間早いです。

それでは、興味のある人は、Python が tzone と DST の値をどのようにして知るのかを尋ねる必要があります。答えは環境変数を通じて得られます。

ここでは、説明のための例として Linux のみを使用します。

Linux には TZ 環境変数があり、その値は次のようなものです:

CST 08EDT、M4.1.0、M10.5.0、この文字列は次のように解釈できます。スペースで区切って 3 つの部分に分けます

CST 08 EDT、M4.1.0、M10.5.0

最初の部分の CST は、タイム ゾーンの名前を表します。これは、中国標準時であり、いわゆる北京時間です。8 は、北京時間に UTC 時間である 8 時間を加えたものを表します。

2 番目の部分 EDT は DST の名前を表します。DST はさまざまな国や地域の政策や規制により異なると言われています。EDT の後に CST のような時間調整値を続けることもできますが、我が国でのみ使用されているため、 1986 年に夏時間は 1992 年に一時期実施されましたが、現在は廃止されているため、後から調整時間を追加する必要はありません。

3 番目の部分は、DST の実施の開始時刻と終了時刻を表すため、詳細な説明は省略します。

(4) 時間の表現、取得、変換

time モジュールで時間を取得する基本的な方法は次のとおりです。 リーリー

UTC 時間を使用して、エポックから現在までの秒数 (浮動小数点数で表現) を返します。

この秒数を年、月、日、時、分、秒の形式に変換したいのは当然のことですが、この変換は 2 つのタイプに分けられます。1 つは依然として UTC 時間を使用し、もう 1 つは UTC 時間を使用します。私たちのタイムゾーンで調整された時刻。

time モジュールは 2 つのメソッドを提供します。

リーリー

両方とも、次の属性を持つクラス struct_time のインスタンスを返します。

Python の時間処理の完全な概要時間を秒単位で表すよりも、この表現の方が理解しやすいです。

これら 2 つの関数がパラメータを渡さずに呼び出された場合、内部で time.time() が呼び出され、返された秒数が変換に使用されます。

逆に、Python には、これら 2 つの struct_time を秒に変換するメソッドも提供されています。

calendar.timegm() メソッドは、UTC の struct_time (gmtime の戻りオブジェクト) をエポックからの秒数に変換するために使用されます

time.mktime() は、タイムゾーンで調整された struct_time (つまり、localtime の戻りオブジェクト) オブジェクトをエポックからの秒数に変換するために使用されます

つまり、mktime メソッドはまずシステム内のタイムゾーンと DST 情報を見つけ、この情報を使用して struct_time を調整し、それを秒に変換します。

もう 1 つの一般的なニーズは、時刻と時刻を表す文字列の間で変換することです。

time モジュールの Strftime と strptime がこれに使用されます。

名前を見ればその意味がわかるはずです。

strftime は文字列形式の時間であり、時間を文字列にフォーマットするために使用されます

strptime は文字列解析時間であり、文字列を時間に解析するために使用されます。

ここでの時間はすべて struct_time オブジェクトであることに注意してください。

時刻のフォーマット方法については、非常に簡単な知識ですが、ここでは公式サイトのドキュメントから内容をお借りします。

Python の時間処理の完全な概要これら 2 つの関数に加えて、time モジュールには時間を文字列に変換するのに役立つ 2 つの便利なメソッドも用意されています

asctime は、次に示すように、struct_time オブジェクトを標準の 24 文字の文字列に変換するために使用されます。

1993年6月20日(日)23時21分05秒

ctime メソッドは、秒を受け取ることを除いて、asctime と同じ機能を持っています。内部的には、最初に秒を localtime を介して struct_time に変換し、その後、asctime と同じになります。

上記は時間モジュールの中心的な内容です。これらの API を覚えやすくするために数式を使用してみます

リーリー

次に、datetime モジュールの学習を開始します。

3.日時モジュール

######(1。概要######

time モジュールは時間を取得して表現するという問題を解決し、datetime モジュールはさらに年、月、日、時、分、秒の時間情報を迅速に取得して操作するという問題を解決します。 簡単に言うと、このモジュールには 3 つのコア クラスがあります。date クラスは年、月、日を表し、time クラスは時、分、秒、ミリ秒を表します。時刻と混同しないでください。ここのモジュール。ジングルはこの状況を思い出すのに役立ちます: 時間がありません 日時で隠されています

編集が悪いのか?まあ、私もそう思います。

datetime クラスは日付と時刻の組み合わせです。

事前に説明しておく必要があるのは、time クラスと datetime クラスの両方に属性があり、その値は tzinfo オブジェクトであり、その値には時刻または日時のタイムゾーン情報が含まれます。この時刻または日時オブジェクトは認識されており、エポックからの秒数に正確に変換できます。

このプロパティが None に設定されている場合、time オブジェクトまたは datetime オブジェクトにはタイムゾーン情報がありません。具体的には、それが現地時間を表すか、utc 時間を表すかは、プログラム内で自分で決定する必要があります。

ここで話している現地時間はタイムゾーンの時間を指し、utc 時間は国際標準時間であるグリニッジ時間を指します。以下同様。

日付にはタイムゾーン情報がないことに注意してください。

(2)从创建datetime开始

创建datetime对象,我最常用的办法如下

dt=datetime.datetime.fromtimestamp(time.time())

以上,time.time()获得自epoch开始的秒数,fromtimestamp方法会将这个秒数转变成一个datetime对象。

这里有一个问题,这个datetime对象究竟是utc的还是local的?

答案是local的,这是该方法的默认行为。如果你在fromtimestamp方法中传入一个表示时区的参数,即tzinfo对象,就会按传入的时区信息进行转换。

获得表示当前local时间的datetime对象,还有两个简便方法

datetime. datetime. now()
datetime. datetime. today()
ログイン後にコピー

以上我们得到的都是local的datetime对象,如何获得utc的datetime对象呢?有两个办法

datetime. datetime. utcfromtimestamp()
datetime. datetime. utcnow()
ログイン後にコピー

我们还可以从字符串中创建datetime对象,

其内部还是先调用的time模块中的striptime方法,获取struct_time对象,再利用struct_time对象中的年月日时分秒信息构建datetime对象。

同样的,datetime类也提供了strftime(),asctime(),ctime()方法,相信不说你也知道是做什么的了。

datetime类还提供了一个combine方法,用来将一个date对象和一个time对象组合成一个datetime对象。

需要注意的是,datetime模块中出现timestamp时,一般可将其理解成time.time()返回的秒数

(3)date和time的创建

date对象的创建和datetime非常相似,

datetime. date. today()

datetime.date.fromtimestamp()都可以创建一个date对象。

当然,你也可以通过构造方法传入年月日来创建date对象。

相比之下,time对象的创建就很有限,只能通过

datetime.time([hour[, minute[, second[, microsecond[, tzinfo]]]]])

这个方法创建。

(4)以上三个对象的操作和timedelta类

在实际使用中,我们有一大块需求就是对日期进行比较和加减运算。得益于python的操作符重载能力,python中可以方便地对

date对象之间,或者datetime对象之间进行小于(

注意,这里仅限于同类对象之间,而且,不包括time对象之间。

两个date对象作减,或者两个datetime对象之间作减,差值用一个timedelta对象表示。

同理,一个date 对象或者datetime对象也可以加或者减一个timedelta对象。

一个timedelta对象含有三个属性:days,seconds, microseconds,days属性可以取负值,另外两个属性都只能是正值。

你可以用total_seconds()方法获得一个timedelta对象的秒数表示。

两个timedelta对象之间可加,可减,但不能做大小比较,因为这样没什么意义。

一个timedelta对象还可以与整数相乘,或通过//操作与一个整数相除。

还可以取反,或者用abs函数获得绝对值

4.无总结,不进步

本文的目的不在于详细说明python处理时间日期的api如何使用,而是想通过一个概览的形式,让大家抓住time和datetime模块的设计结构,从而能够清楚这些模块提供了哪些能力,在需要的时候能够想起来去用,至于查详细的api,应该是可以轻松解决的。

以上がPython の時間処理の完全な概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CentosとUbuntuの違い CentosとUbuntuの違い Apr 14, 2025 pm 09:09 PM

Centosとubuntuの重要な違いは次のとおりです。起源(CentosはRed Hat、for Enterprises、UbuntuはDebianに由来します。個人用のDebianに由来します)、パッケージ管理(CentosはYumを使用し、安定性に焦点を当てます。チュートリアルとドキュメント)、使用(Centosはサーバーに偏っています。Ubuntuはサーバーやデスクトップに適しています)、その他の違いにはインストールのシンプルさが含まれます(Centos is Thin)

Centosをインストールする方法 Centosをインストールする方法 Apr 14, 2025 pm 09:03 PM

Centosのインストール手順:ISO画像をダウンロードし、起動可能なメディアを燃やします。起動してインストールソースを選択します。言語とキーボードのレイアウトを選択します。ネットワークを構成します。ハードディスクをパーティション化します。システムクロックを設定します。ルートユーザーを作成します。ソフトウェアパッケージを選択します。インストールを開始します。インストールが完了した後、ハードディスクから再起動して起動します。

メンテナンスを停止した後のCentosの選択 メンテナンスを停止した後のCentosの選択 Apr 14, 2025 pm 08:51 PM

Centosは廃止されました、代替品には次のものが含まれます。1。RockyLinux(最高の互換性)。 2。アルマリン(Centosと互換性); 3。Ubuntuサーバー(設定が必要); 4。RedHat Enterprise Linux(コマーシャルバージョン、有料ライセンス); 5。OracleLinux(CentosとRhelと互換性があります)。移行する場合、考慮事項は次のとおりです。互換性、可用性、サポート、コスト、およびコミュニティサポート。

Dockerの原則の詳細な説明 Dockerの原則の詳細な説明 Apr 14, 2025 pm 11:57 PM

DockerはLinuxカーネル機能を使用して、効率的で孤立したアプリケーションランニング環境を提供します。その作業原則は次のとおりです。1。ミラーは、アプリケーションを実行するために必要なすべてを含む読み取り専用テンプレートとして使用されます。 2。ユニオンファイルシステム(UnionFS)は、違いを保存するだけで、スペースを節約し、高速化する複数のファイルシステムをスタックします。 3.デーモンはミラーとコンテナを管理し、クライアントはそれらをインタラクションに使用します。 4。名前空間とcgroupsは、コンテナの分離とリソースの制限を実装します。 5.複数のネットワークモードは、コンテナの相互接続をサポートします。これらのコア概念を理解することによってのみ、Dockerをよりよく利用できます。

Dockerデスクトップの使用方法 Dockerデスクトップの使用方法 Apr 15, 2025 am 11:45 AM

Dockerデスクトップの使用方法は? Dockerデスクトップは、ローカルマシンでDockerコンテナを実行するためのツールです。使用する手順には次のものがあります。1。Dockerデスクトップをインストールします。 2。Dockerデスクトップを開始します。 3。Docker Imageを作成します(DockerFileを使用); 4. Docker画像をビルド(Docker Buildを使用); 5。Dockerコンテナを実行します(Docker Runを使用)。

Centosがメンテナンスを停止した後の対処方法 Centosがメンテナンスを停止した後の対処方法 Apr 14, 2025 pm 08:48 PM

CentOSが停止した後、ユーザーは次の手段を採用して対処できます。Almalinux、Rocky Linux、Centosストリームなどの互換性のある分布を選択します。商業分布に移行する:Red Hat Enterprise Linux、Oracle Linuxなど。 Centos 9ストリームへのアップグレード:ローリングディストリビューション、最新のテクノロジーを提供します。 Ubuntu、Debianなど、他のLinuxディストリビューションを選択します。コンテナ、仮想マシン、クラウドプラットフォームなどの他のオプションを評価します。

VSCODEに必要なコンピューター構成 VSCODEに必要なコンピューター構成 Apr 15, 2025 pm 09:48 PM

VSコードシステムの要件:オペレーティングシステム:オペレーティングシステム:Windows 10以降、MACOS 10.12以上、Linux Distributionプロセッサ:最小1.6 GHz、推奨2.0 GHz以上のメモリ:最小512 MB、推奨4 GB以上のストレージスペース:最低250 MB以上:その他の要件を推奨:安定ネットワーク接続、XORG/WAYLAND(Linux)

Docker画像が失敗した場合はどうすればよいですか Docker画像が失敗した場合はどうすればよいですか Apr 15, 2025 am 11:21 AM

障害のあるDocker画像ビルドのトラブルシューティング手順:DockerFileの構文と依存関係バージョンを確認します。ビルドコンテキストに必要なソースコードと依存関係が含まれているかどうかを確認します。エラーの詳細については、ビルドログを表示します。 -targetオプションを使用して、階層フェーズを構築して障害点を識別します。 Dockerエンジンの最新バージョンを使用してください。 -t [image-name]:デバッグモードで画像を作成して、問題をデバッグします。ディスクスペースを確認し、十分であることを確認してください。 Selinuxを無効にして、ビルドプロセスへの干渉を防ぎます。コミュニティプラットフォームに助けを求め、DockerFilesを提供し、より具体的な提案のためにログの説明を作成します。

See all articles