人生や仕事において、私たちは毎日 時間と関わります。 with:
#朝何時に起きますか?
#地下鉄が到着するまで何分かかりますか?
#昼休みは正午からいつ始まりますか? ##################明日は何曜日ですか?
#最後に服を買ってから 2 か月くらい経ちましたか?
#上司から、スケジュールされたタスク関数をコードに追加するように頼まれました。どうすればよいですか?
状況が異なれば、時間の問題も異なります: 特定の時点、時間間隔、曜日など 私たちは常に時間を意識しています。 。 衝突。この記事では、Python を使用して、時間関連のクラス、そのメソッド、プロパティについて詳しく説明します
1. タイムスタンプ

1.1 タイムスタンプの概要
時間関連の関数を正式に説明する前に、まずタイムスタンプ という概念を理解する必要があります。この記事では、特に unix
タイムスタンプについて言及します。タイムスタンプ タイムスタンプとは、ローカル データの更新シーケンスがリモート データの更新シーケンスと一貫していることを確認するために、時刻や日付などの識別テキストを一連のデータに追加することを指します。
unix
タイムスタンプは、閏秒に関係なく、1970 年 1 月 1 日 (UTC/GMT の深夜 0 時) から経過した秒数です。 1970-01-01 は、MySQL の時刻が空の場合に、空のタイムスタンプを変換した後に得られる時刻であることがよくあります。 1 時間は 3600 秒の形式の UNIX タイムスタンプとして表現され、1 日は 86400 秒の UNIX タイムスタンプとして表現され、うるう秒はカウントされません。具体的な比較表は次のとおりです。

##1.2 タイムスタンプ変換 Web サイト
以下では、いくつかのタイムスタンプと特定の時刻の Web サイトを紹介します。 を相互に変換するもの:
1. ウェブマスター ツール: https://tool.chinaz.com/tools/unixtime.aspx2. オンライン ツール: https:/// tool.lu/timestamp/3. Json オンライン解析: https://www.sojson.com/unixtime.html4. Unix タイムスタンプ オンライン変換 (新人ツール) : https: //c.runoob.com/front-end/8525.北京時間 (時刻とタイムスタンプの交換ツール): http://www.beijing-time.org/shijianchuo/ タイムスタンプの基本知識を紹介した後、時刻と日付に関連する 3 つの Python ライブラリに焦点を当てましょう:calendar
time
- datetime
calendar
は中国語で「カレンダー」を意味するため、特にカレンダー形式の日付に適しています。

2.2calendar
デフォルトのパラメータを使用して、次の 2020 年のカレンダーを表示します:
import calendar year = calendar.calendar(2020) print(year)

パラメータを変更して再度表示します:
year = calendar.calendar(2020,w=3,l=1,c=8) print(year)

カレンダー全体の幅が広くなっていることがわかりました。今週の英語も3文字で表示されます 3つのパラメータの意味を説明してください:
c: 月間隔距離
w: 1 日の幅間隔
l: 1 週間あたりの行数
ここで、各行の長さは次のとおりです: 21*w 18 2*c
、1 行あたり 3 か月
最後に、次の 2021 年のカレンダーを見てください:

2.3isleap(year)
この関数の機能は、特定の年がうるう年かどうかを判断することです。存在する場合は True を返し、そうでない場合は False を返します。
通常の年は 4 で割り切れますが、100 では割り切れないため、通常の閏年と呼ばれます。
100 単位の年は 400 で割り切れなければならず、世紀と呼ばれます。 .うるう年

##2.4leapdays(y1,y2)
2 つの閏年の間に何日あるかを決定します。 years 閏年 (y1 は含むが y2 は含まない)、Python スライスの と同様、先頭は含むが末尾は含まない
2.5month(year,month,w=2,l=1)
この関数は year## を返します。 ##month
月カレンダーには、各週に 1 つずつ、合計 2 行のタイトルしかありません。毎日の間隔の幅は w 文字、各行の長さは 7*w 6
です (l は 1 週間あたりの行数です) まずデフォルトの効果を確認します。

1.
w を変更すると、週の表現が次のようになります。 3 文字; 同時に、毎日の間隔が広くなりました (左右の間隔)

,各週の前の間隔 (上下) ) が広くなっていることがわかりました

年、月、および月のカレンダーをリスト形式で返します。リスト形式またはリスト形式で返します。各サブリストは 1 週間です。 今月の日付がない場合は、
を表すために 0 が使用されます。各サブリストは第 1 週から始まり、その特徴は次のように要約されます。
- 各サブリストは週を表します
-
-
引き続き 2020 年 12 月を例に挙げます:

2020 年 3 月のカレンダーを見てみましょう:
2.7monthrange(year,month)
この関数によって返される結果は、タプル内に 2 つの値を持つタプルです(a,b)
値 a は月が始まる曜日を表し、6 は日曜日を表し、値は 0 ~ 6
値 b は、その月の合計日数を表します
次の図で説明します。例、まだ 2020 年 12 月を例に挙げます。

結果の 1 は、12 月が週の 2 日に始まることを意味します (0 ~ 6、6 は を表します)日曜日)、月の合計は 31 日です
2.8weekday(y,m,d)
平日の方法では、年、月、および日付を入力します。日を指定すると、曜日がわかります; 戻り値は 0 ~ 6 で、0 は月曜日を表し、6 は日曜日を表します
12 月 12 日を例に挙げて説明しましょう。例:

Double 12 は Saturday で、返される結果は 5 で、5 は土曜日を表し、完全に一致します。
3.time
time モジュールは時間に関係しますfunction 最も一般的に使用されるモジュール は、Python の時間関連の要件でよく使用されます。このモジュールの使用方法については、以下で詳しく説明します。
3.1 モジュールの内容
まず、モジュールの全体的な使用方法を見てみましょう

3.2time
#time.time()
は、現在の時刻を取得することです。より厳密に言えば、 # を取得することです。 ##現在の時刻のタイムスタンプ。

time.localtime
は 現在の時刻を出力します
、結果は次のとおりです 時間タプル 、具体的な意味は次のとおりです:

のパラメータは、デフォルトで time.time()
のタイムスタンプになります。タイムスタンプを自分で入力して、対応する時刻を取得することもできます
-
タイムスタンプを指定します

3.4gmtime
##localtime()結果は 現地時間
、国際化が必要な場合は、gmtime()、できればグリニッジ時間を使用してください。 グリニッジ標準時: 本初子午線が通過する、イギリスのロンドン郊外にある王立グリニッジ天文台の標準時。

time.asctime
のパラメータが空の場合、デフォルトは ## です# time.localtime の値は、現在の日付、時刻、週を取得するためのパラメータ です。さらに、パラメータを自分で設定することもできます。
パラメータは時間タプル
- 現在の時刻のデフォルトのタイムタプル localtime を使用します


ctime のパラメータはデフォルトでタイムスタンプになります。そうでない場合は、タイムスタンプ
を指定することもできます。
3.7mktime
mktime()
もパラメータとしてタイムタプルを受け取り、タイムスタンプを返します。 は、localtime
の逆のプロセスと同等です:

##3.8strftime
##strftime() は、指定した形式 に従って時間タプルを文字列
に変換します。時間タプルが指定されていない場合、デフォルトは現在時刻 localtime()## です。 #。一般的に使用される時刻形式を次の表に示します。

- 次の区切り文字文字列は任意に指定できます

strptime()
は文字列を文字列に変換します。時間タプル。特に注意する必要があるのは、2 つのパラメータがあることです:- 変換される文字列
に記載されています。

4.datetime
time
モジュールはこれで多くの問題が解決されますが、実際の仕事やビジネス ニーズでは、より便利に、より速く使用できるようにするために、より多くのツールが必要です。datetime
は、非常に便利なモジュールの 1 つです。 datetime
モジュールで一般的に使用されるいくつかのクラスは次のとおりです:
date
: 日付クラス、共通属性:year/month /day
time
: 時間クラス、共通属性:時間/分/秒/マイクロ秒
datetime
: 日付時刻クラスtimedelta
: 時間間隔、つまり 2 つの時刻の間の時間の長さポイントtzinfo
: タイムゾーンクラス
4.1模块内容


4.2date
首先我们引入date
类,并创建一个日期对象:

1、然后我们可以操作这个日期对象的各种属性:后面加上()
print("当前日期:",today) # 当前日期 print("当前日期(字符串):",today.ctime()) # 返回日期的字符串 print("时间元组信息:",today.timetuple()) # 当前日期的时间元组信息 print("年:",today.year) # 返回today对象的年份 print("月:",today.month) # 返回today对象的月份 print("日:",today.day) # 返回today对象的日 print("星期:",today.weekday()) # 0代表星期一,类推 print("公历序数:",today.toordinal()) # 返回公历日期的序数 print("年/周数/星期:",today.isocalendar()) # 返回一个元组:一年中的第几周,星期几 # 结果显示 当前日期: 2020-12-25 当前日期(字符串):Fri Dec 25 00:00:00 2020 时间元组信息:time.struct_time(tm_year=2020, tm_mon=12, tm_mday=25, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=360, tm_isdst=-1) 年: 2020 月: 12 日: 25 星期: 4 公历序数: 737784 年/周数/星期: (2020, 52, 5)
2、date类中时间和时间戳的转换:

具体时间的时间戳转成日期:

3、格式化时间相关,格式参照time模块中的strftime方法
from datetime import datetime, date, time today = date.today() print(today) # 2020-12-26 默认连接符号是- print(today.strftime("%Y/%m/%d")) # 指定连接符 # 2020/12/26 print(today.strftime("%Y:%m:%d")) # 2020:12:26 print(today.strftime("%Y/%m/%d %H:%M:%S")) # 转化为具体的时间 # 2020/12/26 00:00:00
4、修改日期使用replace
方法

4.3time
time
类也是要生成time
对象,包含hour、minute、second、microsecond
,我们还是通过例子来学习:
from datetime import time t = time(10,20,30,40) print(t.hour) # 时分秒 print(t.minute) print(t.second) print(t.microsecond) # 微秒 # 结果 10 20 30 40
4.4datetime
datetime类包含date类和time类的全部信息,下面?是类方法相关的:
from datetime import datetime print(datetime.today()) print(datetime.now()) print(datetime.utcnow())# 返回当前UTC日期和时间的datetime对象 print(datetime.fromtimestamp(1697302830)) # 时间戳的datetime对象 print(datetime.fromordinal(699000) ) print(datetime.combine(date(2020,12,25), time(11,22,54))) # 拼接日期和时间 print(datetime.strptime("2020-12-25","%Y-%m-%d")) # 结果 2020-12-25 23:24:42.481845 2020-12-25 23:24:42.482056 2020-12-25 15:24:42.482140 2023-10-15 01:00:30 1914-10-19 00:00:00 2020-12-25 11:22:54 2020-12-25 00:00:00
再看看相关对象和属性相关:
from datetime import datetime d = datetime(2020,12,25,11,24,23) print(d.date()) print(d.time()) print(d.timetz()) # 从datetime中拆分出具体时区属性的time print(d.replace(year=2021,month=1)) # 替换 print(d.timetuple()) # 时间元组 print(d.toordinal()) # 和date.toordinal一样 print(d.weekday()) print(d.isoweekday()) print(d.isocalendar()) print(d.isoformat()) print(d.strftime("%Y-%m-%d :%H:%M:%S")) # 结果 2020-12-25 11:24:23 11:24:23 2021-01-25 11:24:23 time.struct_time(tm_year=2020, tm_mon=12, tm_mday=25, tm_hour=11, tm_min=24, tm_sec=23, tm_wday=4, tm_yday=360, tm_isdst=-1) 737784 4 5 (2020, 52, 5) 2020-12-25T11:24:23 2020-12-25 :11:24:23
4.5timedelta
timedelta
对象表示的是一个时间段,即两个日期date
或者日期时间datetime
之间的差;支持参数:weeks、days、hours、minutes、seconds、milliseconds、microseconds


4.6tzinfo
本地时间指的是我们系统本身设定时区的时间,例如中国处于北京时间,常说的东八区UTC+8:00
。datetime
类有一个时区属性tzinfo
。
tzinfo
是一个关于时区信息的类,是一个抽象的基类,不能直接被实例化来使用。它的默认值是None
,无法区分具体是哪个时区,需要我们强制指定一个之后才能使用。

因为本身系统的时区刚好在中国处于东八区,所以上述代码是能够正常运行的,结果也是OK的。那如果我们想切换到其他时区的时间,该如何操作呢?这个时候我们需要进行时区的切换。
1、我们先通过utcnow()
获取到当前的UTC时间
utc_now = datetime.utcnow().replace(tzinfo=timezone.utc) # 指定utc时区 print(utc_now) # 结果 2020-12-26 01:36:33.975427+00:00
2、通过astimezone()
将时区指定为我们想转换的时区,比如东八区(北京时间):
# 通过astimezone切换到东八区 beijing = utc_now.astimezone(timezone(timedelta(hours=8))) print(beijing) # 结果 2020-12-26 09:36:33.975427+08:00
用同样的方法切到东九区,东京时间:
# UTC时区切换到东九区:东京时间 tokyo = utc_now.astimezone(timezone(timedelta(hours=9))) print(tokyo) # 结果 2020-12-26 10:36:33.975427+09:00
还可以直接从北京时间切换到东京时间:
# 北京时间(东八区)直接切换到东京时间(东九区) tokyo_new = beijing.astimezone(timezone(timedelta(hours=9))) print(tokyo_new) # 结果 2020-12-26 10:36:33.975427+09:00

5.常用时间转化
下面介绍几个工作中用到的时间转化小技巧:
时间戳转日期
日期转时间戳
格式化时间
指定格式获取当前时间
5.1时间戳转成日期
时间戳转成具体时间,我们需要两个函数:
time.localtime
:将时间戳转成时间元组形式time.strftime
:将时间元组数据转成我们需要的形式
import time now_timestamp = time.time() # 获取当前时间的时间戳 # 时间戳先转成时间元组,strftime在转成指定格式 now_tuple = time.localtime(now_timestamp) time.strftime("%Y/%m/%d %H:%M:%S", now_tuple) # 结果 '2020/12/26 11:19:01'
假设我们指定一个具体的时间戳来进行转换:
import time timestamp = 1608852741 # 指定时间戳 a = time.localtime(timestamp) # 获得时间元组形式数据 print("时间元组数据:",a) time.strftime("%Y/%m/%d %H:%M:%S", a) # 格式化 # 结果 时间元组数据:time.struct_time(tm_year=2020, tm_mon=12, tm_mday=25, tm_hour=7, tm_min=32, tm_sec=21, tm_wday=4, tm_yday=360, tm_isdst=0) '2020/12/25 07:32:21'
如果我们不想指定具体的格式,只想获取时间戳对应的时间,直接通过time.ctime
即可:
import time time.ctime(1608852741) # 结果 'Fri Dec 25 07:32:21 2020'
5.2日期时间转成时间戳
日期时间转成时间戳格式,我们需要使用两个方法:
strptime()
:将时间转换成时间数组mktime()
:将时间数组转换成时间戳
通过具体的案例来学习一下:
date = "2020-12-26 11:45:34" # 1、时间字符串转成时间数组形式 date_array = time.strptime(date, "%Y-%m-%d %H:%M:%S") # 2、查看时间数组数据 print("时间数组:", date_array) # 3、mktime时间数组转成时间戳 time.mktime(date_array) # 结果 时间数组:time.struct_time(tm_year=2020, tm_mon=12, tm_mday=26, tm_hour=11, tm_min=45, tm_sec=34, tm_wday=5, tm_yday=361, tm_isdst=-1) 1608954334.0

5.3格式化时间
工作需求中有时候给定的时间格式未必是我们能够直接使用,所以可能需要进行格式的转换,需要使用两个方法:
strptime()
:将时间转换成时间数组strftime()
:重新格式化时间
通过案例来进行学习:
import time old = "2020-12-12 12:28:45" # 1、转换成时间数组 time_array = time.strptime(old, "%Y-%m-%d %H:%M:%S") # 2、转换成新的时间格式(20201212-20:28:54) new = time.strftime("%Y%m%d-%H:%M:%S",time_array) # 指定显示格式 print("原格式时间:",old) print("新格式时间:",new) # 结果 原格式时间: 2020-12-12 12:28:45 新格式时间: 20201212-12:28:45

5.4指定格式获取当前时间
为了能够获取到指定格式的当前时间,我们分为3个步骤:
time.time()
:获取当前时间time.localtime()
:转成时间元组time.strftime()
:重新格式化时间
通过一个案例来学习:
# 1、时间戳 old_time = time.time() # 2、时间元组 time_array = time.localtime(old_time) # 3、指定格式输出 new_time = time.strftime("%Y/%m/%d %H:%M:%S", time_array) print(new_time) # 结果 2020/12/26 11:56:08
6.总结
本文通过各种案例详细介绍了Python
中关于时间输出和转化的3个模块:calendar、time、datetime
,最后总结了4个工作中常用的时间转化技巧,希望对大家掌握Python中的时间输出和转化有所帮助,不再被时间困扰。
以上が一気に学べるPythonの時間変換まとめ(超完全版)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PythonとCにはそれぞれ独自の利点があり、選択はプロジェクトの要件に基づいている必要があります。 1)Pythonは、簡潔な構文と動的タイピングのため、迅速な開発とデータ処理に適しています。 2)Cは、静的なタイピングと手動メモリ管理により、高性能およびシステムプログラミングに適しています。

PythonまたはCの選択は、プロジェクトの要件に依存します。1)迅速な開発、データ処理、およびプロトタイプ設計が必要な場合は、Pythonを選択します。 2)高性能、低レイテンシ、および緊密なハードウェアコントロールが必要な場合は、Cを選択します。

毎日2時間のPython学習を投資することで、プログラミングスキルを効果的に改善できます。 1.新しい知識を学ぶ:ドキュメントを読むか、チュートリアルを見る。 2。練習:コードと完全な演習を書きます。 3。レビュー:学んだコンテンツを統合します。 4。プロジェクトの実践:実際のプロジェクトで学んだことを適用します。このような構造化された学習計画は、Pythonを体系的にマスターし、キャリア目標を達成するのに役立ちます。

2時間以内にPythonを効率的に学習する方法は次のとおりです。1。基本的な知識を確認し、Pythonのインストールと基本的な構文に精通していることを確認します。 2。変数、リスト、関数など、Pythonのコア概念を理解します。 3.例を使用して、基本的および高度な使用をマスターします。 4.一般的なエラーとデバッグテクニックを学習します。 5.リストの概念を使用したり、PEP8スタイルガイドに従ったりするなど、パフォーマンスの最適化とベストプラクティスを適用します。

Pythonは初心者やデータサイエンスに適しており、Cはシステムプログラミングとゲーム開発に適しています。 1. Pythonはシンプルで使いやすく、データサイエンスやWeb開発に適しています。 2.Cは、ゲーム開発とシステムプログラミングに適した、高性能と制御を提供します。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

Pythonはデータサイエンスと迅速な発展により適していますが、Cは高性能およびシステムプログラミングにより適しています。 1. Python構文は簡潔で学習しやすく、データ処理と科学的コンピューティングに適しています。 2.Cには複雑な構文がありますが、優れたパフォーマンスがあり、ゲーム開発とシステムプログラミングでよく使用されます。

Pythonを学ぶために1日2時間投資することは可能です。 1.新しい知識を学ぶ:リストや辞書など、1時間で新しい概念を学びます。 2。練習と練習:1時間を使用して、小さなプログラムを書くなどのプログラミング演習を実行します。合理的な計画と忍耐力を通じて、Pythonのコアコンセプトを短時間で習得できます。

Pythonは学習と使用が簡単ですが、Cはより強力ですが複雑です。 1。Python構文は簡潔で初心者に適しています。動的なタイピングと自動メモリ管理により、使いやすくなりますが、ランタイムエラーを引き起こす可能性があります。 2.Cは、高性能アプリケーションに適した低レベルの制御と高度な機能を提供しますが、学習しきい値が高く、手動メモリとタイプの安全管理が必要です。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

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