Python中时间操作

说明:以 classmethod 开头表示类方法,不以 classmethod 开头表示对象方法

datetime.timezone

class datetime.timezone(offset, name=None)

  • offset需要指定一个timedelta对象,表示与UTC时间的差值,范围在 -timedelta(hours=24)timedelta(hours=24) 之间,注意这两个值不能取

timezone.utc

  • 返回一个timezone对象,表示获取utc时区,等同于 datetime.timezone(deltatime(0))
  • 这是一个类属性(准确说是一个变量),不能在后面加括号调用

datetime.datetime

class datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)

  • year、month、day 值是必须的,tzinfo可以为None,也可以为tzinfo的一个实例

classmethod datetime.now(tz=None)

  • 获取当前时间,返回一个datetime对象,默认tzinfo为None,表示本地时区,可以手动指定时区

classmethod datetime.today()

  • 获取本地当前时间,相当于now(tz=None)

classmethod datetime.utcnow()

  • 获取utc时区的当前时间,tzinfo为None

classmethod datetime.strptime(date_string, format)

  • 将字符串解析为datetime时间,format表示date_string的格式

datetime.strftime(format)

  • 返回一个字符串,由format控制格式

classmethod datetime.fromtimestamp(timestamp, tz=None)

  • 将时间戳转换为datetime格式,不指定tz则为本地时区时间。

classmethod datetime.utcfromtimestamp(timestamp)

  • 将时间戳转换为datetime格式的utc时区时间

datetime.timestamp()

  • 返回datetime对应的时间戳

classmethod datetime.combine(date, time, tzinfo=self.tzinfo)

  • 将时间、日期组成一个datetime格式的时间

datetime.year/month/day/hour/minute/second/microsecond/tzinfo

  • 获取datetime的部分时间信息

datetime.date()/time()

  • 获取datetime的时间或日期信息

datetime.weekday()

  • 返回时间对应的星期,星期一为0,星期天为6

datetime.isoweekday()

  • 以整数形式返回星期,星期一为1,星期天为7

django.utils.timezone

utc

  • 获取utc时区的tzinfo实例(可以赋值给tz)

now()

  • 获取当前时间,使用时区为UTC时区

get_current_timezone()

  • 获取本地时区的tzinfo实例

localtime(value=None, timezone=None)

  • 将带时区的datetime转换为指定时区的datetime
  • value是带时区的datetime类型,默认为now()
  • timezone默认为本地时区

localdate(value=None, timezone=None)

  • 将带时区的datetime转换为指定时区的date
  • value是带时区的datetime类型,默认为now()
  • timezone默认为本地时区

is_aware(value)

  • 是否有时区,value为datetime类型,tzinfo不为None返回True

is_naive(value)

  • 是否无时区,和is_aware相反

make_aware(value, timezone=None, is_dst=None)

  • 将无时区的datetime转换为有时区的datetime,
  • value是一个没有时区的datetime类型,timezone为None则默认使用本地时区

make_naive(value, timezone=None)

  • 将有时区的datetime转换为无时区的datetime
  • value是一个有时区的datetime,会先把时间转换到指定时区的时间,然后去除时区信息
  • timezone为None默认使用本地时区