python time datetime 使用

项目中用到一个需求

开始的我傻傻分不清楚, 闲言少絮,开始正题
1 业务需求,需要随机获得 十年间隔内任意一天 人的生日
在python sqlalchemy 中birthday是 date格式(2017-12-14)
在python中怎么实现呢?
现在还没有优化的的代码是这样的:

     @staticmethod
     def get_birthday():
        date1 = (2007, 1, 1, 0, 0, 0, -1, -1, -1)
        time1 = mktime(date1)
        date2 = (2017, 1, 1, 0, 0, 0, -1, -1, -1)
        time2 = mktime(date2)
        random_time = random.uniform(time1, time2)  # uniform返回随机实数 time1 <= time < time2
        random_time = date.fromtimestamp(random_time)
        return random_time

if __name__ == '__main__':    
    birthday = OhhoRandom.get_birthday()
    print(birthday) # 2008-10-18

we

  • nihao
    • rr
    • rrr

双方的

sdfsdfsdfsdf
sdfsdf

sdf

dfsdfsdf
    sdfsd

  1. 有序列表

dd

datetime

datetime 是Python 处理日期和时间的标准库
要将datetime 拆开看 date 和 time
2015-04-19 12:20:00 这样就是日期时间类型 2015-04-19是日期(年月日) 12:20:00 时间(时分秒)

这里首先要清楚一个概念,模块,类

>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2017, 12, 15, 16, 26, 6, 981321)
>>> type(datetime.now())
<type 'datetime.datetime'>

注意到datetime是模块,datetime模块还包含一个datetime类,通过from datetime import datetime导入的才是datetime这个类。

如果仅导入import datetime,则必须引用全名datetime.datetime。

datetime.now()返回当前日期和时间,其类型是datetime

datetime 类也有自己的时间戳, time模块中也有
现在看下datetime 模块中有哪些类,类中又有哪些方法和属性
最好的学习方法是学习官网
https://docs.python.org/3/library/datetime.html#available-types


datetime 中包含的类:

  • datetime.datetime
  • datetiem.date
  • datetime.time
  • datetime.timezone
  • datetiem.tzinfo
  • datetime.delta

datetime.datetime 类

datetime 类 包含了来自于 datetime.date datetime.time 类的所有信息

# datetime 中的方法
>>> datetime.now().year # 获取当年的年份 year是属性
2017
>>> datetime.now() # 当前本地的时间相当于localtime时间
datetime.datetime(2017, 12, 15, 16, 58, 13, 767337)
>>> datetime.utcnow() # 获取utc的时间和本地实际不一样
datetime.datetime(2017, 12, 15, 8, 58, 32, 79397)
>>> datetime.today()
datetime.datetime(2017, 12, 15, 17, 4, 44, 815862)

datetime 类型的属性 有year,month, day, hour, minute,second, microsecond, tzinfo,fold

microsecond 微妙

tzinfo 时区信息对象

fold

毫秒怎么表示呢?

datetime.timestamp 时间戳

import time
t1 = time.time()
time.sleep(3)
t2 = time.time()
print(t2 - t1) # 3.0001702308654785

from datetime import datetime
t3 = datetime.now().timestamp()
time.sleep(3)
t4 = datetime.now().timestamp()
print(t4 - t3) # 3.0004689693450928

>>> datetime.now().timestamp()
1513938240.282642
>>> time.time()
1513938521.50536

说明:
time 是以float 为基础的,小数点后面是 毫秒数,整数部分是秒 Java 中不一样Java中是毫秒

关于时间戳

时间戳和时区没有关系,使用本地时间
当前时间的时间戳和utc 下的时间的时间戳

print(datetime.now().timestamp())
print(datetime.now())
print(datetime.utcnow().timestamp())
print(datetime.utcnow())
#1513940607.905186
#2017-12-22 19:03:27.905186
#1513911807.905186
#2017-12-22 11:03:27.905186

python 中日期转字符串和 字符串转日期

日期转字符串

now_datetime = datetime.now()
now_string = now_datetime.strftime("%Y-%m-%d %H:%M:%S")
print(now_string)
#2017-12-22 19:16:25

字符串 转日期

string_date = datetime.strptime("2017-12-22 19:16:25", "%Y-%m-%d %H:%M:%S")
print(string_date)  #2017-12-22 19:16:25
string_date = datetime.strptime("2017-12-22", "%Y-%m-%d")
print(string_date)#2017-12-22 00:00:00
string_date = datetime.strptime("19:16:25", "%H:%M:%S")
print(string_date) # 1900-01-01 19:16:25

离现在之前的时间

date

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值