python時間処理(timeとdatetimeの紹介)
14400 ワード
pythonの時間に関するものは何種類ありますか?今日はtimeとdatetimeの2つを紹介します
timeモジュールは各種操作時間の関数を提供する
Datetimeモジュールは、次のクラスを定義します. datetime.date:日付を表すクラス.よく使われる属性はyear、month、dayです. datetime.time:時間を表すクラス.よく使われる属性はhour,minute,second,microsecondです. datetime.Datetime:日付時間を表します. datetime.timedelta:時間間隔、すなわち2つの時点間の長さを表します. datetime.tzinfo:タイムゾーンに関する情報.
pythonで処理されるイベントのタイプは何種類ありますか?
*タイムスタンプの方法(19,70.1.1 00:00:00:00に対して秒単位で計算されたオフセット量)は、1382678303.98などのタイムスタンプのみです.
*同じタイムスタンプのstruct_timeはタイムゾーンによって異なる:time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=13, tm_min=21, tm_sec=33, tm_wday=4, tm_yday=298, tm_isdst=0)
説明してください.最初の6つは説明する必要はありません.次の4つを説明します.
tm_wday:(0-6, Monday is 0)
tm_yday:(day in the year, 1-366)
tm_isdst:(-1,0 or 1)0:通常1:DSTサマータイムが通常より1時間早い-1:現在のタイムゾーンによる
*表示形式としてのみ使用できる文字列もあります.例:2013-10-25 13:29:39.543000
実用的な観点からtimeとdatetimeを分離しないために、取得と出力の観点から整理します.
1.時間の取得方法、さまざまなフォーマットの時間の取得方法
timeモジュール:
datetimeモジュール:
2.時間があれば、実際にフォーマット間の処理を設計します.例えば、データベースにはタイムスタンプフォーマットが保存されていますが、現実には文字列でしょう.そのstruct_time、いいでしょう.少ないでしょう.
timeモジュール:
タイムスタンプ-->struct_time,文字列
struct_time->文字列、タイムスタンプ
文字列-->struct_time,PS:文字列はタイムスタンプに直接変換できません.struct_に移行する必要があります.time
datetimeモジュール:
いくつかのdatetimeモジュールでよく使われる方法を紹介します.
datetime.fromtimestamp(time.time())#タイムスタンプを文字列に変換
3.ある時間の間隔を設定する必要がある場合、datetimeのdatetimeを使用するなど、特殊な場合を処理する.timedeltaクラス.
コードを参照:
最後に、フォーマットされた文字列の意味をリストします.
%a週間の略記.水曜日はWeb%A週間の全書きです.水曜日はWednesday%b月の略記のようです.例えば4月がApr%B月の全書きです.4月がApril%cの場合:日付時刻の文字列が表示されます.(例えば:04/07/10 10:43:39)%d:今月中の日数(今月の何日目)%f:マイクロ秒(範囲[09999999])%H:時間(24時間制、[0,23])%I:時間(12時間制、[0,11])%j:日中の日数[0366](その年の何日目)%m:月([01,12])%M:分([00,59])%p:AMまたはPM%S:秒(範囲[00,61],なぜ[00,59]ではないのかpythonマニュアル~~)%U:週はその年の週数その年の何週目)であり、日曜日は週の初日%w:今日は今週の日数で範囲[0,6]、6は日曜日%W:週はその年の週数(その年の何週目)であり、月曜日を週の初日とする%x:日付文字列(例:04/07/10)%X:時間文字列(例:10:43:39)%y:2つの数字で表される年%Y:4つの数字で表される年%z:utc時間からの間隔(ローカル時間であれば空の文字列を返す)%Z:タイムゾーン名(ローカル時間であれば空の文字列を返す)%
例:mysqlのselect当日のデータ:
転載先:https://www.cnblogs.com/maseng/p/3387845.html
timeモジュールは各種操作時間の関数を提供する
Datetimeモジュールは、次のクラスを定義します.
pythonで処理されるイベントのタイプは何種類ありますか?
*タイムスタンプの方法(19,70.1.1 00:00:00:00に対して秒単位で計算されたオフセット量)は、1382678303.98などのタイムスタンプのみです.
*同じタイムスタンプのstruct_timeはタイムゾーンによって異なる:time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=13, tm_min=21, tm_sec=33, tm_wday=4, tm_yday=298, tm_isdst=0)
説明してください.最初の6つは説明する必要はありません.次の4つを説明します.
tm_wday:(0-6, Monday is 0)
tm_yday:(day in the year, 1-366)
tm_isdst:(-1,0 or 1)0:通常1:DSTサマータイムが通常より1時間早い-1:現在のタイムゾーンによる
*表示形式としてのみ使用できる文字列もあります.例:2013-10-25 13:29:39.543000
実用的な観点からtimeとdatetimeを分離しないために、取得と出力の観点から整理します.
1.時間の取得方法、さまざまなフォーマットの時間の取得方法
timeモジュール:
>>> import time
>>> time.time()#
1382679270.196
>>> time.clock()# ,
2.1380998706449576e-06
>>> time.mktime((2013,11,11,11,11,11,1,1,0))# mktime
1384139471.0
datetimeモジュール:
>>> from datetime import *
>>> date.today()*
datetime.date(2013, 10, 25)
>>> datetime.today()#
datetime.datetime(2013, 10, 25, 13, 42, 53, 455000)
>>> datetime.now()#
datetime.datetime(2013, 10, 25, 13, 43, 0, 322000)
2.時間があれば、実際にフォーマット間の処理を設計します.例えば、データベースにはタイムスタンプフォーマットが保存されていますが、現実には文字列でしょう.そのstruct_time、いいでしょう.少ないでしょう.
timeモジュール:
タイムスタンプ-->struct_time,文字列
>>> import time
>>> a = time.time()#
>>> a
1382680272.862
>>> time.ctime(a)*
'Fri Oct 25 13:51:12 2013'
>>> time.gmtime(a)# struct_time
time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=5, tm_min=51, tm_sec=12, tm_wday=4, tm_yday=298, tm_isdst=0)
>>> time.localtime()# struct_time
time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=13, tm_min=52, tm_sec=1, tm_wday=4, tm_yday=298, tm_isdst=0)
>>> time.localtime(a)# a struct_time
time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=13, tm_min=51, tm_sec=12, tm_wday=4, tm_yday=298, tm_isdst=0)
struct_time->文字列、タイムスタンプ
>>> import time
>>> a = time.localtime()
>>> a
time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=13, tm_min=57, tm_sec=18, tm_wday=4, tm_yday=298, tm_isdst=0)
>>> b = time.asctime(a)#
>>> b
'Fri Oct 25 13:57:18 2013'
>>> time.mktime(a)#
1382680638.0
>>> time.strftime("%a %b %d %H:%M:%S %Y",a)#
'Fri Oct 25 13:57:18 2013'
文字列-->struct_time,PS:文字列はタイムスタンプに直接変換できません.struct_に移行する必要があります.time
>>> import time
>>> a
time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=14, tm_min=5, tm_sec=28, tm_wday=4, tm_yday=298, tm_isdst=0)
>>> b = time.asctime(a)
>>> b
'Fri Oct 25 14:05:28 2013'
>>> c = time.strptime(b,'%a %b %d %H:%M:%S %Y')# 9
>>> c
time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=14, tm_min=5, tm_sec=28, tm_wday=4, tm_yday=298, tm_isdst=-1)
datetimeモジュール:
いくつかのdatetimeモジュールでよく使われる方法を紹介します.
datetime.fromtimestamp(time.time())#タイムスタンプを文字列に変換
from datetime import *
import time
print 'datetime.max:', datetime.max
print 'datetime.min:', datetime.min
print 'datetime.resolution:', datetime.resolution
print 'today():', datetime.today()
print 'now():', datetime.now()
print 'utcnow():', datetime.utcnow()
print 'fromtimestamp(tmstmp):', datetime.fromtimestamp(time.time())#
print 'utcfromtimestamp(tmstmp):', datetime.utcfromtimestamp(time.time())
# ---- ----
# datetime.max: 9999-12-31 23:59:59.999999
# datetime.min: 0001-01-01 00:00:00
# datetime.resolution: 0:00:00.000001
# today(): 2010-04-07 09:48:16.234000
# now(): 2010-04-07 09:48:16.234000
# utcnow(): 2010-04-07 01:48:16.234000 # +8 , 8
# fromtimestamp(tmstmp): 2010-04-07 09:48:16.234000
# utcfromtimestamp(tmstmp): 2010-04-07 01:48:16.234000
3.ある時間の間隔を設定する必要がある場合、datetimeのdatetimeを使用するなど、特殊な場合を処理する.timedeltaクラス.
コードを参照:
#! /usr/bin/python
# coding=utf-8
from datetime import datetime,timedelta
"""
timedelta datetime
"""
now = datetime.now()
past = past = datetime(2010,11,12,13,14,15,16)
timespan = now - past
#
past - now
attrs = [
("days"," "),( 'seconds'," "),( 'microseconds'," ")
#('min'," "),( 'max'," "),
]
for k,v in attrs:
"timespan.%s = %s #%s" % (k,getattr(timespan, k),v)
"""
"""
timespan.total_seconds()
"""
timespan
timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
"""
timespan = timedelta(days=1)##timespan = timedelta(minutes=30)
now - timespan # datetime
now + timespan
timespan * 2 # 。
timespan / 13
#
from calendar import monthrange
now + timedelta(days=monthrange(start.year,start.month)[1])
最後に、フォーマットされた文字列の意味をリストします.
%a週間の略記.水曜日はWeb%A週間の全書きです.水曜日はWednesday%b月の略記のようです.例えば4月がApr%B月の全書きです.4月がApril%cの場合:日付時刻の文字列が表示されます.(例えば:04/07/10 10:43:39)%d:今月中の日数(今月の何日目)%f:マイクロ秒(範囲[09999999])%H:時間(24時間制、[0,23])%I:時間(12時間制、[0,11])%j:日中の日数[0366](その年の何日目)%m:月([01,12])%M:分([00,59])%p:AMまたはPM%S:秒(範囲[00,61],なぜ[00,59]ではないのかpythonマニュアル~~)%U:週はその年の週数その年の何週目)であり、日曜日は週の初日%w:今日は今週の日数で範囲[0,6]、6は日曜日%W:週はその年の週数(その年の何週目)であり、月曜日を週の初日とする%x:日付文字列(例:04/07/10)%X:時間文字列(例:10:43:39)%y:2つの数字で表される年%Y:4つの数字で表される年%z:utc時間からの間隔(ローカル時間であれば空の文字列を返す)%Z:タイムゾーン名(ローカル時間であれば空の文字列を返す)%
例:mysqlのselect当日のデータ:
today = datetime.datetime.today()
print today
yestoday = today - datetime.timedelta(days=1)
print yestoday
content1 = db.query("select * from log where time > %s and time < %s",yestoday,today)
0 24 :
day = datetime.datetime.now()
oneday = datetime.timedelta(days=1)
day = day - oneday
date_from = datetime.datetime(day.year, day.month, day.day, 00, 00, 00)
date_to = datetime.datetime(day.year, day.month, day.day, 23, 59, 59)
転載先:https://www.cnblogs.com/maseng/p/3387845.html