对于如何将Python日期时间日期转换为十进制/浮点数感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍怎么用python将日期转化为数字,并为您提供关于python-如何在不导入日期时间的情况下
对于如何将Python日期时间日期转换为十进制/浮点数感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍怎么用python将日期转化为数字,并为您提供关于python - 如何在不导入日期时间的情况下将字符串日期时间转换为日期时间?、python – 如何将二进制转换为浮点数、python-2.7 – 将Python日期转换为Unix时间戳、Python-将UTC日期时间字符串转换为本地日期时间的有用信息。
本文目录一览:- 如何将Python日期时间日期转换为十进制/浮点数(怎么用python将日期转化为数字)
- python - 如何在不导入日期时间的情况下将字符串日期时间转换为日期时间?
- python – 如何将二进制转换为浮点数
- python-2.7 – 将Python日期转换为Unix时间戳
- Python-将UTC日期时间字符串转换为本地日期时间
如何将Python日期时间日期转换为十进制/浮点数(怎么用python将日期转化为数字)
我正在寻找一种将datetime对象转换为十进制(/ float)年,包括小数部分的方法。例:
>>> obj = SomeObjet()>>> obj.DATE_OBSdatetime.datetime(2007, 4, 14, 11, 42, 50)
如何转换datetime.datetime(2007, 4, 14, 11, 42,50)
为十进制年份?从这种格式dd/mm/yyyy
到这种格式yyyy.zzzz
(注意:在统计建模中(例如,用于线性回归),这称为 “时间指数” )
答案1
小编典典from datetime import datetime as dtimport timedef toYearFraction(date): def sinceEpoch(date): # returns seconds since epoch return time.mktime(date.timetuple()) s = sinceEpoch year = date.year startOfThisYear = dt(year=year, month=1, day=1) startOfNextYear = dt(year=year+1, month=1, day=1) yearElapsed = s(date) - s(startOfThisYear) yearDuration = s(startOfNextYear) - s(startOfThisYear) fraction = yearElapsed/yearDuration return date.year + fraction
演示:
>>> toYearFraction(dt.today())2011.47447514
此方法可能精确到秒(如果是夏令时或其他奇怪的区域性影响生效,则为小时)。在leap年期间也可以正常工作。如果您需要极高的分辨率(例如由于地球自转的变化),那么最好查询网络服务。
python - 如何在不导入日期时间的情况下将字符串日期时间转换为日期时间?
import time
my_time = time.strptime('Jun 1 2005 1:33PM','%b %d %Y %I:%M%p')
time.struct_time(tm_year=2005,tm_mon=6,tm_mday=1,tm_hour=13,tm_min=33,tm_sec=0,tm_wday=2,tm_yday=152,tm_isdst=-1)
timestamp = time.mktime(my_time)
# convert time object to datetime
from datetime import datetime
my_datetime = datetime.fromtimestamp(timestamp)
# convert time object to date
from datetime import date
my_date = date.fromtimestamp(timestamp)
不导入日期时间就无法转换为日期时间
python – 如何将二进制转换为浮点数
>>> float(-0b1110)
给我正确的输出:
-14.0
不幸的是,我正在使用二进制字符串,即我需要像float(‘ – 0b1110’)这样的东西.但是,这不行:
>>> float('-0b1110') Traceback (most recent call last): File "<stdin>",line 1,in <module> ValueError: invalid literal for float(): -0b1110
我尝试使用* binascii.a2b_qp(string [,header])*,它将一个引用的可打印数据块转换回二进制,并返回二进制数据.但是最终我得到了同样的错误:
>>> float(binascii.a2b_qp('-0b1110')) Traceback (most recent call last): File "<stdin>",in <module> ValueError: invalid literal for float(): -0b1110
我了解输出数是整数的情况,但是如果要获取数字12.546怎么办?那么二进制字符串的函数如何调用呢?
解决方法
float(int('-0b1110',0))
这对我行得通.
如果您有一个64位字符串表示浮点数而不是整数,则可以进行三步转换 – 第一步将字符串转换为整数,第二步将其转换为8字节字符串,第三个将这些位重新解释为浮点数.
>>> import struct >>> s = '0b0100000000101001000101111000110101001111110111110011101101100100' >>> q = int(s,0) >>> b8 = struct.pack('Q',q) >>> struct.unpack('d',b8)[0] 12.546
当然,您可以将所有步骤组合成一行.
>>> s2 = '0b1100000000101100000000000000000000000000000000000000000000000000' >>> struct.unpack('d',struct.pack('Q',int(s2,0)))[0] -14.0
python-2.7 – 将Python日期转换为Unix时间戳
我已经添加了一个时间对象,所以它将是午夜的特定日期,但我不知道如何从那里继续.
d = date(2014,10,27) t = time(0,0) dt = datetime.combine(d,t) #How to convert this to Unix timestamp?
我使用的是Python 2.7
解决方法
import time from datetime import date d = date(2014,27) unixtime = time.mktime(d.timetuple())
Python-将UTC日期时间字符串转换为本地日期时间
我从来没有不得不将时间与UTC转换。最近有人要求我的应用注意时区,并且我一直在圈子里奔波。我发现很多有关将本地时间转换为UTC的信息,这很基本(也许我也做错了),但是我找不到任何有关将UTC时间轻松转换为最终用户时区的信息。
简而言之,android应用程序向我发送了(appengine应用程序)数据,该数据中包含时间戳。要将时间戳存储为UTC时间,我正在使用:
datetime.utcfromtimestamp(timestamp)
那似乎行得通。当我的应用存储数据时,存储时间要提前5个小时(我是EST -5)
数据存储在Appengine的BigTable上,并且在检索时会以字符串形式显示,如下所示:
"2020-01-21 02:37:21"
如何在用户正确的时区将此字符串转换为DateTime?
另外,建议为用户存储的时区信息是什么?(你通常如何存储tz信息,即:“-5:00”或“ EST”等?)我确定第一个问题的答案可能包含一个参数,第二个问题的答案。
答案1
小编典典如果你不想提供自己的tzinfo对象,请签出python-dateutil
库。它tzinfo
在zoneinfo
(Olson)数据库的顶部提供了实现,因此你可以使用一些规范的名称来引用时区规则。
from datetime import datetimefrom dateutil import tz# METHOD 1: Hardcode zones:from_zone = tz.gettz(''UTC'')to_zone = tz.gettz(''America/New_York'')# METHOD 2: Auto-detect zones:from_zone = tz.tzutc()to_zone = tz.tzlocal()# utc = datetime.utcnow()utc = datetime.strptime(''2020-01-21 02:37:21'', ''%Y-%m-%d %H:%M:%S'')# Tell the datetime object that it''s in UTC time zone since # datetime objects are ''naive'' by defaultutc = utc.replace(tzinfo=from_zone)# Convert time zonecentral = utc.astimezone(to_zone)
编辑扩展示例以显示strptime用法
今天关于如何将Python日期时间日期转换为十进制/浮点数和怎么用python将日期转化为数字的介绍到此结束,谢谢您的阅读,有关python - 如何在不导入日期时间的情况下将字符串日期时间转换为日期时间?、python – 如何将二进制转换为浮点数、python-2.7 – 将Python日期转换为Unix时间戳、Python-将UTC日期时间字符串转换为本地日期时间等更多相关知识的信息可以在本站进行查询。
本文标签: