在 Python 中解析 hw_clock 输出
Parse hw_clock output in Python
的输出
/sbin/hwclock --show --utc
看起来像
2017-06-01 16:04:47.029482+1:00
如何将此字符串解析为 Python 中的日期时间对象?
您可以使用 datetime.strptime()
. 将日期字符串和格式作为输入和 return 日期时间对象方法将字符串解析为日期时间对象。
拆分为 space 拳头值为日期,如 2017-06-01
d =date.split(" ")[0]
按点分割得到时间
t = data.split(" ")[1].split(".")[0]
可以使用第三方库python-dateutil
(pip install python-dateutil
):
>>> import dateutil.parser
>>> dateutil.parser.parse('2017-06-01 16:04:47.029482+1:00')
datetime.datetime(2017, 6, 1, 16, 4, 47, 29482, tzinfo=tzoffset(None, 3600))
如果您不想使用第三方库:
import datetime
import re
def parse_iso_timestamp(clock_string):
# Handle offset < 10
clock_string = re.sub(r'\+(\d):', r'+0', clock_string)
# Handle offset > 10
clock_string = re.sub(r'\+(\d\d):', r'+', clock_string)
# Parse
dt = datetime.datetime.strptime(clock_string, '%Y-%m-%d %H:%M:%S.%f%z')
return dt
print(parse_iso_timestamp('2017-06-01 16:04:47.029482+1:00').__repr__())
print(parse_iso_timestamp('2017-06-01 16:04:47.029482+10:00').__repr__())
输出:
datetime.datetime(2017, 6, 1, 16, 4, 47, 29482, tzinfo=datetime.timezone(datetime.timedelta(0, 3600)))
datetime.datetime(2017, 6, 1, 16, 4, 47, 29482, tzinfo=datetime.timezone(datetime.timedelta(0, 36000)))
仅使用日期时间:
import datetime
s = "2017-06-01 16:04:47.029482+1:00"
try:
stamp, zone = s.rsplit('+', 1)
sign = '+'
except ValueError:
stamp, zone = s.rsplit('-', 1)
sign = '-'
zone = int(zone.replace(':', ''))
new_s = '%s%s%04d' % (stamp, sign, zone)
print(new_s)
dt = datetime.datetime.strptime(new_s, "%Y-%m-%d %H:%M:%S.%f%z")
print(dt.__repr__())
/sbin/hwclock --show --utc
看起来像
2017-06-01 16:04:47.029482+1:00
如何将此字符串解析为 Python 中的日期时间对象?
您可以使用 datetime.strptime()
. 将日期字符串和格式作为输入和 return 日期时间对象方法将字符串解析为日期时间对象。
拆分为 space 拳头值为日期,如 2017-06-01
d =date.split(" ")[0]
按点分割得到时间 t = data.split(" ")[1].split(".")[0]
可以使用第三方库python-dateutil
(pip install python-dateutil
):
>>> import dateutil.parser
>>> dateutil.parser.parse('2017-06-01 16:04:47.029482+1:00')
datetime.datetime(2017, 6, 1, 16, 4, 47, 29482, tzinfo=tzoffset(None, 3600))
如果您不想使用第三方库:
import datetime
import re
def parse_iso_timestamp(clock_string):
# Handle offset < 10
clock_string = re.sub(r'\+(\d):', r'+0', clock_string)
# Handle offset > 10
clock_string = re.sub(r'\+(\d\d):', r'+', clock_string)
# Parse
dt = datetime.datetime.strptime(clock_string, '%Y-%m-%d %H:%M:%S.%f%z')
return dt
print(parse_iso_timestamp('2017-06-01 16:04:47.029482+1:00').__repr__())
print(parse_iso_timestamp('2017-06-01 16:04:47.029482+10:00').__repr__())
输出:
datetime.datetime(2017, 6, 1, 16, 4, 47, 29482, tzinfo=datetime.timezone(datetime.timedelta(0, 3600)))
datetime.datetime(2017, 6, 1, 16, 4, 47, 29482, tzinfo=datetime.timezone(datetime.timedelta(0, 36000)))
仅使用日期时间:
import datetime
s = "2017-06-01 16:04:47.029482+1:00"
try:
stamp, zone = s.rsplit('+', 1)
sign = '+'
except ValueError:
stamp, zone = s.rsplit('-', 1)
sign = '-'
zone = int(zone.replace(':', ''))
new_s = '%s%s%04d' % (stamp, sign, zone)
print(new_s)
dt = datetime.datetime.strptime(new_s, "%Y-%m-%d %H:%M:%S.%f%z")
print(dt.__repr__())