day15知识点

# 1. python和时间相关的模块有两个: time datetime

# 2. 时间戳

## 时间戳指的是当前时间到1970年1月1日0时0分0秒 (指的是格林威治时间)的时间差(单位是秒)

1) 使用时间戳保存时间比使用字符串保存时间所占用的内容要少很多;
2) 通过时间戳对时间进行加密 更简单 


数值: 2的8次方 - 1个字节, 
数值: 2的16次方 - 2个字节   32次方 - 4个字节

'2020-12-26 9:29:30' (保存的时候至少需要18个字节)

当前时间 - 1970年1月1日0时0分0秒 = 时间戳

### 1. time() - 获取当前时间, 返回的是时间戳

import time
t1=time.time()
print(t1,type(t1))   # 1608945751.3224735 <class 'float'>

### 2. localtime() - 获取当前本地时间, 返回的是结构体时间

t2 = time.localtime()
print(t2,type(t2))   # <class 'time.struct_time'>
print(f'{t2.tm_year}-{t2.tm_mon}-{t2.tm_mday}-{t2.tm_hour}-{t2.tm_min}-{t2.tm_sec}')

# localtime(时间戳)  -  将时间戳转换成本地的结构体时间
t3=time.localtime(0)
print(t3)

t4=time.localtime(1608945751.3224735)
print(t4)
print('********************************练习*********************************')

# 练习1:自己封装一个函数,将结构体时间转换成字符串时间,字符串时间的格式是: 'xxxx年xx月xx日 xx:xx:xx'
# 练习2:自己封装一个函数,将时间戳转换成字符串时间,字符串时间的格式是: 'xxxx年xx月xx日 xx:xx:xx'

def change(struct_time:time.struct_time):
    # re=f'{struct_time.tm_year}年{struct_time.tm_mon}月{struct_time.tm_mday}日 {struct_time.tm_hour}:{struct_time.tm_min}:{struct_time.tm_sec}'
    return f'{struct_time.tm_year}年{struct_time.tm_mon}月{struct_time.tm_mday}日 {struct_time.tm_hour}:{struct_time.tm_min}:{struct_time.tm_sec}'

print(change(t2))
print('======================================================')

def change2(chuo_time):
    re1=time.localtime(chuo_time)
    return f'{re1.tm_year}年{re1.tm_mon}月{re1.tm_mday}日 {re1.tm_hour}:{re1.tm_min}:{re1.tm_sec}'

print(change2(time.time()))
print('==========================================================')

def change3(chuo_time,sep:''):
    re1=time.localtime(chuo_time)
    return f'{re1.tm_year}{sep}{re1.tm_mon}{sep}{re1.tm_mday}{sep}{re1.tm_hour}{sep}{re1.tm_min}{sep}{re1.tm_sec}'

print(change3(time.time(),sep='^-^'))

### 3. 将结构体时间转换成字符串时间

# strftime
时间格式字符串 - 包含时间占位符的字符串

%Y  -  年
%m  -  月
%d  -  日
%H  -  时(24小时制)
%I  -  时(12小时制)
%M  -  分
%S  -  秒
%a  -  星期(英文单词简写)
%A  -  星期(英文单词全拼)
%w  -  星期(数字值)
%b  -  月份(英文简写)
%B  -  月份(英文全拼)
%p  -  上午或者下午(AM/PM)
t5=time.localtime()
st5=time.strftime('%Y{y}%m{m}%d{d}',t5).format(y='年',m='月',d='日')
print(st5)

# xxxx-xx-xx
st5=time.strftime('%Y-%m-%d',t5)
print(st5)

# xxxx/xx/xx
st5=time.strftime('%Y/%m/%d',t5)
print(st5)


 # 星期几 上午时:分

t6=time.localtime()
st_6=time.strftime('{}%w{}%I{}%M{}',t6).format('星期',' 上午','时 ','分')
print(st_6)

t7=time.localtime()
st_7=time.strftime('%a %p %H:%M')
print(st_7)


# 4.sleep(时间)  -  程序暂停指定时间(单位秒)
time.sleep(2)
print('============')

#datetime模块

import datetime
from datetime import datetime,date,time,timedelta

# time - 时分秒
# date - 年月日
# datetime - 年月日时分秒
t1=date.today()
print(t1.year,t1.month,t1.day)

t2=datetime.today()
print(t2)


t2=datetime.now()
print(t2)

t3=datetime(2020,12,31,23,58,40)
print(t3)  #2020-12-31 23:58:40

# 让时间t3加20秒
print(t3+timedelta(seconds=20))

# 加分钟
print(t3+timedelta(minutes=2))

# 加天
print(t3+timedelta(days=2))

# hash摘要

hashilib是python自带的一个专门提供hash加密的模块

##1.hash加密的特点

1) 同一个数据通过同一个加密算法得到的结果是一样的 (加密后的结果叫密文或者摘要)
2) 加密后的结果不可逆
3) 不同大小的数据通过相同的算法生成的摘要的长度是一样的

## 2.应用场景

1) 创建数据不可逆的密文(加密)
2) 验证数据的完整性和是否被修改

## 3.怎么生成摘要

# 1) 根据加密算法创建hash对象
hash=hashlib.md5()      # 常见的hash算法 : md5、sha相关

# 2)添加加密对象
# hash对象.update(数据)
# 数据必须是bytes对象
hash.update(bytes('1234567',encoding='utf-8'))

# 3) 生成摘要(生成密文)
# hash对象.hexdigest()
result=hash.hexdigest()    # hexdigest生成16进制摘要
print(result)

#json数据

## 1.什么是json

json是一种数据格式: 1)一个json有且只有一个数据
                 2) 这个唯一的数据必须是json支持的数据类型的数据json是一种数据格式: 1)一个json有且只有一个数据
                 2) 这个唯一的数据必须是json支持的数据类型的数据

## 2.json支持的数据类型

1)数字类型: 包括所有的数字, 整数、浮点数、正数负数, 表示的时候直接写, 支持科学计数法
2)字符串: 只能使用双引号, 支持转移字符。 "abc","abc\n123", "\u4e00abc"
3)布尔: 只有true 和 false 两个值。表示的时候直接写
4)数组: 相当于列表,[元素1,元素2,元素3,...]
5)字典: 相当于python的字典, {键1:值1,键2:值2,...}, 注意:键只能是字符串
6)空值: null

## 3. json数据转python

数字   --     整型、浮点型
字符串  --    字符串
布尔  --      布尔;   true->True    false->False
数组  --      列表
字典 --       字典
null  --     None

# json.loads(json数据)  -  json数据指的是 json格式的字符串(字符串去掉引号之后本身就是一个合法的json数据)
# 'abc'  -  不是json格式字符串     '123' - 是json格式字符串  '[10,20,30]'
# '"abc"'  -   是json格式字符串    'True' - 不是json格式字符串
import json
re=json.loads('["hello",123,false,null]')
print(re)
re2=json.loads('{"name":"张三","age":18}')
print(re2["name"])

## 4. python数据转json

int、float   -->   数字
布尔         -->   布尔: True --> true
字符串        -->   字符串, 引号变成双引号
列表、元组     -->   数组
字典          -->   字典
None         -->   null
# json.dumps(数据)    -    将python数据转换成json格式的字符串!!!  !-返回结果是字符串-!
# 120  ->  '120'
# 'abc'   ->   '"abc"'
# {10,20,30}  ->  报错!
print(json.dumps('abc'))
mdict={'name':"小明","age":23,10:100}
re=json.dumps(mdict)
print(re,type(re))
print("\u5c0f\u660e")
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值