日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python什么时候诞生的_关于RFC 3339日期时间:在Python中产生timestamp

發(fā)布時(shí)間:2025/5/22 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python什么时候诞生的_关于RFC 3339日期时间:在Python中产生timestamp 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我正在嘗試在python中生成一個(gè)RFC3339 UTC時(shí)間戳。到目前為止,我已經(jīng)能夠做到以下幾點(diǎn):

>>> d = datetime.datetime.now()

>>> print d.isoformat('T')

2011-12-18T20:46:00.392227

我的問(wèn)題是設(shè)置UTC偏移量。

根據(jù)文檔,類方法datetime.now([tz])采用可選的tz參數(shù),其中tz must be an instance of a class tzinfo subclass和datetime.tzinfo是an abstract base class for time zone information objects.參數(shù)。

這就是我迷路的地方——為什么TZINFO是一個(gè)抽象類,我應(yīng)該如何實(shí)現(xiàn)它?

(注意:在PHP中,它和timestamp = date(DATE_RFC3339);一樣簡(jiǎn)單,這就是為什么我不理解為什么python的方法如此復(fù)雜的原因…)

剛剛發(fā)現(xiàn)了類似的問(wèn)題:Python中的iso時(shí)間(iso8601)?

時(shí)區(qū)是一種痛苦,這可能就是為什么它們選擇不將它們包括在日期時(shí)間庫(kù)中的原因。

試試PYTZ,它有你要找的TZINFO:http://pytz.sourceforge.net網(wǎng)站/

您需要首先創(chuàng)建datetime對(duì)象,然后按如下方式應(yīng)用時(shí)區(qū),然后您的.isoformat()輸出將包括所需的UTC偏移量:

d = datetime.datetime.utcnow()

d_with_timezone = d.replace(tzinfo=pytz.UTC)

d_with_timezone.isoformat()

'2017-04-13T14:34:23.111142+00:00'

或者,只需使用UTC,在末尾加上一個(gè)"Z"(表示祖魯時(shí)區(qū)),將"時(shí)區(qū)"標(biāo)記為UTC。

d = datetime.datetime.utcnow() #

print d.isoformat("T") +"Z"

'2017-04-13T14:34:23.111142Z'

@Monkut-謝謝-Pytz類看起來(lái)像另一個(gè)可以工作的實(shí)現(xiàn),但是我最終使用了包含在文檔中的示例,按照Ruakh的答案。

@蒙庫(kù)特-+1你的第二個(gè)例子也是個(gè)好主意。

它不會(huì)為我返回微秒:-/

在Python 3.3 +中:

>>> from datetime import datetime, timezone

>>> local_time = datetime.now(timezone.utc).astimezone()

>>> local_time.isoformat()

'2015-01-16T16:52:58.547366+01:00'

在舊的python版本上,如果只需要一個(gè)以UTC表示當(dāng)前時(shí)間的感知日期時(shí)間對(duì)象,那么可以定義一個(gè)簡(jiǎn)單的TZINFO子類,如文檔中所示,以表示UTC時(shí)區(qū):

from datetime import datetime

utc_now = datetime.now(utc)

print(utc_now.isoformat('T'))

# -> 2015-05-19T20:32:12.610841+00:00

您還可以使用tzlocal模塊獲取表示您的本地時(shí)區(qū)的pytz時(shí)區(qū):

#!/usr/bin/env python

from datetime import datetime

from tzlocal import get_localzone # $ pip install tzlocal

now = datetime.now(get_localzone())

print(now.isoformat('T'))

它可以在python 2和3上工作。

手放低,python 3.3的最佳答案+

從技術(shù)上講,ISO 8601和RFC 3339不完全兼容……存在一些差異,例如ISO 8601允許UTC偏移部分使用減號(hào)或連字符,而RFC 3339只允許使用連字符。到目前為止,我看到的每一個(gè).isoformat()實(shí)現(xiàn)(只有兩個(gè))都與RFC3339重疊,但最好讓自己意識(shí)到這些差異

@Villapx:RFC3339是ISO 8601的簡(jiǎn)介。碰巧,datetime.isoformat()是用于時(shí)區(qū)感知日期時(shí)間的RFC3339(這就是我使用它的原因)。

@J.F.Sebastian是的,看起來(lái)你是對(duì)的……從文件中,isotime()[gives] the UTC offset in (signed) hours and minutes: YYYY-MM-DDTHH:MM:SS.mmmmmm+HH:MM,這是RFC3339。它沒(méi)有明確地說(shuō)它將使用連字符,而不是減號(hào),但它是由示例所隱含的

雖然,isoformat()沒(méi)有考慮tzinfo對(duì)象的夏令時(shí)偏移量——當(dāng)我更改dst()返回值時(shí),isoformat()仍然返回相同的字符串。

@villapx:isoformat()返回正確的值,它只是反映datetime對(duì)象包含的內(nèi)容。也就是說(shuō),它顯示了它的.utcoffset()值。

@J.F.Sebastian是的,這就是我的意思——只是想讓潛在用戶知道isoformat()不知道DST

@維拉克斯:不,是錯(cuò)的。你誤導(dǎo)了"潛在用戶"。如果.utcoffset()沒(méi)有反映.dst()的值,那么你的datetime類就壞了。

@J.F.塞巴斯蒂安哦,哇,你說(shuō)得對(duì)。我完全被datetime.tzinfo.dst()文件誤導(dǎo)了:Note that DST offset, if applicable, has already been added to the UTC offset returned by utcoffset(), so there’s no need to consult dst() unless you’re interested in obtaining DST info separately.我沒(méi)有直接在上面看到,對(duì)于utcoffset()文件,上面寫(xiě)著"Note that this is intended to be the total offset from UTC."。

在您鏈接到的同一個(gè)文檔中,它進(jìn)一步解釋了如何實(shí)現(xiàn)它,給出了一些示例,包括UTC類(表示UTC)的完整代碼、FixedOffset類(表示與UTC有固定偏移的時(shí)區(qū),而不是帶有dst和whatnot的時(shí)區(qū))以及其他一些示例。

@Ruakh-謝謝,我錯(cuò)過(guò)了那些例子-LocalTimezone()班的技巧。

@雅林:不客氣!

@吉恩·伍德:希望你不要介意,我已經(jīng)恢復(fù)了你的編輯。問(wèn)題是,您實(shí)現(xiàn)的內(nèi)容與OP實(shí)際需要的內(nèi)容不匹配。

@魯克沒(méi)問(wèn)題。我誤解了。這是否是解決OP問(wèn)題的代碼示例?:gist.github.com/gene1wood/11386298

為什么不在問(wèn)題中包括一個(gè)完整的示例而不是鏈接,這是stackoverflow的首選方法?@吉恩·伍德,為什么不用你的全部答案創(chuàng)造一個(gè)新的答案呢?

@Joakim當(dāng)然,這是完整的答案

我很難使用rfc339日期時(shí)間格式,但我找到了一個(gè)合適的解決方案來(lái)在兩個(gè)方向上轉(zhuǎn)換日期字符串<=>datetimeu對(duì)象。

您需要兩個(gè)不同的外部模塊,因?yàn)槠渲幸粋€(gè)模塊只能在一個(gè)方向上進(jìn)行轉(zhuǎn)換(不幸的是):

第一次安裝:

sudo pip install rfc3339

sudo pip install iso8601

然后包括:

import datetime ? ? # for general datetime object handling

import rfc3339 ? ? ?# for date object -> date string

import iso8601 ? ? ?# for date string -> date object

為了不需要記住哪個(gè)模塊是哪個(gè)方向,我編寫(xiě)了兩個(gè)簡(jiǎn)單的助手函數(shù):

def get_date_object(date_string):

return iso8601.parse_date(date_string)

def get_date_string(date_object):

return rfc3339.rfc3339(date_object)

在代碼中,您可以這樣輕松地使用:

input_string = '1989-01-01T00:18:07-05:00'

test_date = get_date_object(input_string)

# >>> datetime.datetime(1989, 1, 1, 0, 18, 7, tzinfo=)

test_string = get_date_string(test_date)

# >>> '1989-01-01T00:18:07-05:00'

test_string is input_string # >>> True

尤里卡!現(xiàn)在,您可以輕松地(哈哈)使用日期字符串和日期字符串的可用格式。

"HueCKA"。失去"H"。

pytz包可用于python 2.x和3.x。它實(shí)現(xiàn)了tzinfo的具體子類,以及其他服務(wù),因此您不必這樣做。

要添加UTC偏移量:導(dǎo)入日期時(shí)間進(jìn)口吡茲

dt = datetime.datetime(2011, 12, 18, 20, 46, 00, 392227)

utc_dt = pytz.UTC.localize(dt)

現(xiàn)在這個(gè):

print utc_dt.isoformat()

將打印:

2011-12-18T20:46:00.392227+00:00

如果您只需要UTC時(shí)區(qū),則不需要pytz模塊。定義UTC TZINFO很簡(jiǎn)單

謝謝。當(dāng)我需要stdlib解決方案時(shí),我會(huì)保存您的答案。UTC只是最短的一個(gè)例子。OP沒(méi)有特別要求。pytz知道所有時(shí)區(qū)及其DST,我覺(jué)得這很有用。

注:在我的回答中,get_localzone()返回與本地時(shí)區(qū)相對(duì)應(yīng)的時(shí)區(qū)。

我想它會(huì)返回pytz時(shí)區(qū)。自動(dòng)更正?

對(duì)。應(yīng)該是"pytz時(shí)區(qū)",而不是"puts時(shí)區(qū)"

您確實(shí)可以使用內(nèi)置的日期時(shí)間模塊。AS盧卡提到,在顯示方式的頁(yè)面。如果你看一下你會(huì)的請(qǐng)參閱一個(gè)顯示許多不同用例的長(zhǎng)示例。這是密碼您正在尋找,它將生成一個(gè)RFC3339 UTC時(shí)間戳。

from datetime import tzinfo, timedelta, datetime

import time as _time

ZERO = timedelta(0)

STDOFFSET = timedelta(seconds=-_time.timezone)

if _time.daylight:

DSTOFFSET = timedelta(seconds=-_time.altzone)

else:

DSTOFFSET = STDOFFSET

DSTDIFF = DSTOFFSET - STDOFFSET

class LocalTimezone(tzinfo):

def utcoffset(self, dt):

if self._isdst(dt):

return DSTOFFSET

else:

return STDOFFSET

def dst(self, dt):

if self._isdst(dt):

return DSTDIFF

else:

return ZERO

def tzname(self, dt):

return _time.tzname[self._isdst(dt)]

def _isdst(self, dt):

tt = (dt.year, dt.month, dt.day,

dt.hour, dt.minute, dt.second,

dt.weekday(), 0, 0)

stamp = _time.mktime(tt)

tt = _time.localtime(stamp)

return tt.tm_isdst > 0

Local = LocalTimezone()

d = datetime.now(Local)

print d.isoformat('T')

# which returns

# 2014-04-28T15:44:45.758506-07:00

我剛開(kāi)始使用的另一個(gè)有用的實(shí)用程序:用于時(shí)區(qū)處理和日期分析的dateutil庫(kù)。推薦,包括這個(gè)答案

總結(jié)

以上是生活随笔為你收集整理的python什么时候诞生的_关于RFC 3339日期时间:在Python中产生timestamp的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 别揉我奶头一区二区三区 | 日韩国产在线一区 | 黄色一级片黄色一级片 | 午夜影院私人 | 欧美一区二区视频在线 | 韩国精品av | 深爱综合网 | 人人爱人人插 | 中文字幕亚洲在线观看 | 欧美老女人性生活视频 | 欧美性xxxx图片 | 丰满人妻一区二区三区四区 | 亚州av综合色区无码一区 | 国产特级视频 | 国产成人无码久久久精品天美传媒 | 九九久久国产视频 | 青娱乐97 | xxx黄色片 | 妺妺窝人体色WWW精品 | 亚洲精品视频在线看 | 久操视频在线播放 | 麻豆网站入口 | 强开小受嫩苞第一次免费视频 | 久久久久人妻一区精品 | 欧美日韩一区二区视频观看 | 97免费看 | 亚洲123区 | 精品国产a线一区二区三区东京热 | 欧美36p| 精品视频导航 | 亚洲另类天堂 | 亚洲欧洲另类 | 六月丁香在线视频 | 曰本黄色大片 | 黄色网址最新 | 亚洲av无一区二区三区怡春院 | 999这里有精品 | 日韩精品久久久久久 | 中文字幕一区二区三区免费视频 | 成人午夜影院在线观看 | 亚洲欧美日本在线观看 | 国产va| 色漫在线观看 | 色婷婷综合成人av | 隔壁邻居是巨爆乳寡妇 | 麻豆一区二区在线 | 在线看的av | 人人夜| 亚洲激情视频小说 | 亚洲高清视频免费观看 | 国产成人久久精品麻豆二区 | 一卡二卡在线 | 久久精品一 | 伊人久久免费 | 迈开腿让我尝尝你的小草莓 | 亚洲天堂视频网 | 182tv午夜| av黄色片| 伊人青青草视频 | 日韩av自拍| 日韩欧美网 | 粉嫩aⅴ一区二区三区 | 日韩精品91| 一区二区三区在线观看免费视频 | 国产成人精品免高潮在线观看 | 欧美成人精品二区三区99精品 | 日日骚av | 久久久久久久久久久久久久久久久久久久 | 精品人妻伦九区久久aaa片 | 欧美一级久久久 | 久久综合五月婷婷 | 日本一区二区人妻 | 伊人五月综合 | 国产超碰人人模人人爽人人添 | 国产尤物在线 | 一级aaa毛片 | 亚洲av无码乱码国产精品 | 久久99九九 | 91伊人 | 日韩亚洲精品中文字幕 | 欧美激情在线一区 | 天天操天天做 | 亚洲精品一区二区三区影院忠贞 | a无一区二区三区 | 久操久操久操 | 久热在线视频 | jizzzxxxx| 亚洲天堂第一页 | 久操超碰 | 国产男女视频 | 久伊人 | 特大巨交吊性xxxx | 精品一区在线看 | 98视频在线| 捆绑凌虐一区二区三区 | 疯狂做爰的爽文多肉小说王爷 | 欧美三级午夜理伦三级小说 | 国产免费美女 | 日本视频二区 |