1 Star 0 Fork 0

nsyouran/depot_tools

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
git_dates.py 1.82 KB
一键复制 编辑 原始数据 按行查看 历史
Mike Frysinger 提交于 2023-09-06 05:48 . switch to 4 space indent
# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Utility module for dealing with Git timestamps."""
import datetime
def timestamp_offset_to_datetime(timestamp, offset):
"""Converts a timestamp + offset into a datetime.datetime.
Useful for dealing with the output of porcelain commands, which provide times
as timestamp and offset strings.
Args:
timestamp: An int UTC timestamp, or a string containing decimal digits.
offset: A str timezone offset. e.g., '-0800'.
Returns:
A tz-aware datetime.datetime for this timestamp.
"""
timestamp = int(timestamp)
tz = FixedOffsetTZ.from_offset_string(offset)
return datetime.datetime.fromtimestamp(timestamp, tz)
def datetime_string(dt):
"""Converts a tz-aware datetime.datetime into a string in git format."""
return dt.strftime('%Y-%m-%d %H:%M:%S %z')
# Adapted from: https://docs.python.org/2/library/datetime.html#tzinfo-objects
class FixedOffsetTZ(datetime.tzinfo):
def __init__(self, offset, name):
datetime.tzinfo.__init__(self)
self.__offset = offset
self.__name = name
def __repr__(self): # pragma: no cover
return '{}({!r}, {!r})'.format(
type(self).__name__, self.__offset, self.__name)
@classmethod
def from_offset_string(cls, offset):
try:
hours = int(offset[:-2])
minutes = int(offset[-2:])
except ValueError:
return cls(datetime.timedelta(0), 'UTC')
delta = datetime.timedelta(hours=hours, minutes=minutes)
return cls(delta, offset)
def utcoffset(self, dt):
return self.__offset
def tzname(self, dt):
return self.__name
def dst(self, dt):
return datetime.timedelta(0)
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/nsyouran/depot_tools.git
git@gitee.com:nsyouran/depot_tools.git
nsyouran
depot_tools
depot_tools
main

搜索帮助

0d507c66 1850385 C8b1a773 1850385