0%

Python数据科学_31_时间数据处理_datetime库

datetime库

date, datetime, time 和 timezone 通用特征属性

  • 这些类型的对象都是不可变的。
  • 这些类型的对象都是可哈希的,这意味着它们可被作为字典的键。
  • 这些类型的对象支持通过pickle模块进行高效的封存。

库结构:
5_202303092130

timedelta对象

timedalta对象表示两个date或者time的时间间隔

timedelta定义

为了保证表达方式的唯一性,输出结果会以days, seconds, microseconds标准格式处理。

1
2
3
4
5
6
7
8
delta = dtm.timedelta(
days=50,
seconds=27,
microseconds=10,
minutes=5,
weeks=2
)
delta
datetime.timedelta(days=64, seconds=327, microseconds=10)
1
2
d1 = dtm.timedelta(minutes=2)
d1
datetime.timedelta(seconds=120)
1
2
d2 = dtm.timedelta(seconds=30)
d2
datetime.timedelta(seconds=30)

属性

1
2
3
print(d1.days)  # 查看天数
print(d1.seconds) # 查看秒数
print(d1.microseconds) # 查看微秒数
0
120
0

方法

1
(d1 + d2).total_seconds()
150.0

运算

与标量间进行运算

1
2
# 乘以一个标量
d1 * 2
datetime.timedelta(seconds=240)
1
2
# 除以一个标量(整除)
d1 / 2
datetime.timedelta(seconds=60)
1
2
# 除以一个标量(非整除)
d1 / 7
datetime.timedelta(seconds=17, microseconds=142857)

两个timedelta进行运算

1
2
# 加法
d1 + d2
datetime.timedelta(seconds=150)
1
2
# 减法
d1 - d2
datetime.timedelta(seconds=90)
1
2
# 无法做乘法运算
d1 * d2
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-47-109a12497ebf> in <module>
      1 # 无法做乘法运算
----> 2 d1 * d2


TypeError: unsupported operand type(s) for *: 'datetime.timedelta' and 'datetime.timedelta'
1
2
# 除法(整除)
d1 / d2
1
2
# 除法(非整除)
d1 / (d2*3)
1.3333333333333333
1
2
# 取整数
d1 // (d2*3)
1
1
2
# 取余数
d1 % (d2*3)
datetime.timedelta(seconds=30)
1
2
# 取相反数
-d1
datetime.timedelta(days=-1, seconds=86280)
1
2
# 取绝对值
abs(d2 - d1)
datetime.timedelta(seconds=90)
1
2
# 返回一个形如 [D day[s], ][H]H:MM:SS[.UUUUUU] 的字符串
str(d2 - d1)
'-1 day, 23:58:30'
1
2
# 返回一个 timedelta 对象的字符串表示形式,作为附带正规属性值的构造器调用
repr(d1)
'datetime.timedelta(seconds=120)'

比较

1
d1 > d2
True
1
d1 < d2
False
1
d1 == d2
False
1
d1 != d2
True

tzinfo对象

这是一个抽象类,也就是说该类不应被直接实例化。在使用时,一般定义tzinfo的子类来捕获有关特定时区的信息。

将本地时间与 UTC 时差返回为一个 timedelta 对象,如果本地时区在 UTC 以东则为正值。 如果本地时区在 UTC 以西则为负值。

  • dtm.tzinfo.utcoffset(dt)

将夏令时(DST)调整返回为一个 timedelta 对象,如果 DST 信息未知则返回 None

  • dtm.tzinfo.dst(dt)

将对应于 datetime 对象 dt 的时区名称作为字符串返回。

  • dtm.tzinfo.tzname(dt)

此方法会由默认的 datetime.astimezone() 实现来调用。 当被其调用时,dt.tzinfo 为 self,并且 dt 的日期和时间数据会被视为表示 UTC 时间,fromutc() 的目标是调整日期和时间数据,返回一个等价的 datetime 来表示 self 的本地时间.

  • dtm.tzinfo.fromutc(dt)

timezone对象

class datetime.timezone(offset, name=None)

  • offset 参数必须指定为一个 timedelta 对象,表示本地时间与 UTC 的时差。 它必须严格限制于 -timedelta(hours=24) 和 timedelta(hours=24) 之间,否则会引发 ValueError。
  • name 参数是可选的。 如果指定则必须为一个字符串,它将被用作 datetime.tzname() 方法的返回值。

timezone 类是 tzinfo 的子类,它的每个实例都代表一个以与 UTC 的固定时差来定义的时区。

1
2
# 定义时间段
td = dtm.timedelta(hours=8)
1
2
3
# 定义时区
tz1 = dtm.timezone(td, '新时区')
tz1
datetime.timezone(datetime.timedelta(seconds=28800), '新时区')
1
2
# 使用timezone构造datetime对象
datetime33 = dtm.datetime(2022, 11, 22, 16, 4, 22, tzinfo=tz1)
1
2
# 查看本地时间与UTC时间之间的时差
tz1.utcoffset(datetime33)
datetime.timedelta(seconds=28800)
1
2
# 查看时区名称
tz1.tzname(datetime33)
'新时区'
1
2
# 返回 dt + offset。 dt 参数必须为一个感知型 datetime 实例,其中 tzinfo 值设为 self。
tz1.fromutc(datetime33)
datetime.datetime(2022, 11, 23, 0, 4, 22, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800), '新时区'))

date对象

class datetime.date(year, month, day)

date对象代表一个理想化中的日期(年、月和日)

类方法

1
2
# 查看今天日期
dtm.date.today()
datetime.date(2022, 11, 22)
1
2
# 查看时间戳对应的日期
dtm.date.fromtimestamp(time.time())
datetime.date(2022, 11, 22)
1
2
# 查看YYYY-MM-DD 格式给出的 date_string 的 date 对象
dtm.date.fromisoformat('2022-11-21')
datetime.date(2022, 11, 21)
1
2
3
# 返回指定 year, week 和 day 所对应 ISO 历法日期的 date
# 查看2022年第11个星期的星期二对应日期
dtm.date.fromisocalendar(2022, 11, 2)
datetime.date(2022, 3, 15)
1
2
# 查看距离公元1年1月1日特定的天数,所对应的日期
dtm.date.fromordinal(738481)
datetime.date(2022, 11, 22)

类属性

1
2
# 最小日期
dtm.date.min
datetime.date(1, 1, 1)
1
2
# 最大日期
dtm.date.max
datetime.date(9999, 12, 31)
1
2
# 两个日期对象的最小时间间隔
dtm.date.resolution
datetime.timedelta(days=1)

实例属性

1
date1 = dtm.date.today()
1
date2 = dtm.date(2022, 12, 31)
1
2
3
print(date1.year)
print(date1.month)
print(date1.day)
2022
11
22

运算

1
2
d3 = dtm.timedelta(days=10)
d3
datetime.timedelta(days=10)
1
date1
datetime.date(2022, 11, 22)
1
date1 + d3
datetime.date(2022, 12, 2)
1
date1 - d3
datetime.date(2022, 11, 12)
1
date2 - date1
datetime.timedelta(days=39)

比较

1
date1 < date2
True

实例方法

1
2
3
4
# 替换日期值
print(date2)
date2 = date2.replace(year=2021, day=30)
print(date2)
2022-12-31
2021-12-30
1
2
# 返回一个元组格式的时间数据
date1.timetuple()
time.struct_time(tm_year=2022, tm_mon=11, tm_mday=22, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=326, tm_isdst=-1)
1
2
3
4
5
# 返回日期的预期格列高利历序号,即今天距离公元1年1月1日的天数
print(date1.toordinal())
# 等价于
print((dtm.date.today() - dtm.date(1, 1, 1) + dtm.timedelta(days=1)).days)
# 与dtm.date.fromordinal互为逆方法
738481
738481
1
2
# 查看距离公元1年1月1日特定的天数,所对应的日期
date1.fromordinal(date1.toordinal())
datetime.date(2022, 11, 22)
1
2
# 返回星期数,星期一为0,星期天为6
date1.weekday()
1
1
2
# 返回星期数,星期一为1,星期天为7
date1.isoweekday()
2
1
2
3
# 返回一个三元元组,表示某个日期对应的年份、今年的星期数、是星期几
dtm.date.today().isocalendar()
# dtm.date.fromisocalendar()互为逆方法
(2022, 47, 2)
1
2
3
# 返回一个以ISO 8601格式YYYY-MM-DD来表示日期的字符串
date1.isoformat()
# 与dtm.date.fromisoformat()互为逆操作
'2022-11-22'
1
2
# 返回一个表示日期的标准字符串
date1.ctime()
'Tue Nov 22 00:00:00 2022'
1
2
# 返回一个由显式格式字符串所指明的代表日期的字符串。
date1.strftime('%a %b %d %H-%M-%S %Y') # 此时等价于date.ctime()
'Tue Nov 22 00-00-00 2022'

time对象

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

一个 time 对象代表某日的(本地)时间,它独立于任何特定日期,并可通过 tzinfo 对象来调整。

类属性

1
dtm.time.min
datetime.time(0, 0)
1
dtm.time.max
datetime.time(23, 59, 59, 999999)
1
dtm.time.resolution
datetime.timedelta(microseconds=1)

实例属性

1
2
3
# 构造
t1 = dtm.time(16, 17, 22, 222333)
print(t1)
16:17:22.222333
1
2
3
# 添加时区
t2 = dtm.time(16, 17, 22, 222333, tzinfo=tz1)
t2
datetime.time(16, 17, 22, 222333, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800), '新时区'))
1
2
3
4
5
6
# 默认是不支持修改的,如果要修改的话需要调用replace方法
print(t2.hour) # 查看小时
print(t2.minute) # 查看分钟
print(t2.second) # 查看秒数
print(t2.microsecond) # 查看微秒数
print(t2.tzinfo) # 查看时区
16
17
22
222333
新时区
1
2
# 将字符串时间数据转化为time对象
dtm.time.fromisoformat('17:09:11.333222+07:00')
datetime.time(17, 9, 11, 333222, tzinfo=datetime.timezone(datetime.timedelta(seconds=25200)))
1
2
# 将time对象转化为字符串格式
t1.isoformat()
'16:17:22.222333'
1
2
# 将time对象转化为指定格式字符串
t1.strftime('%H %M %S')
'16 17 22'
1
2
3
4
# 修改时间属性
print('修改前:', t1)
t1 = t1.replace(tzinfo=tz1)
print('修改后:', t1)
修改前: 16:17:22.222333
修改后: 16:17:22.222333+08:00
1
2
# 获取time对象时区时差
t1.utcoffset()
datetime.timedelta(seconds=28800)
1
2
# 获取time对象时区名称
t1.tzname()
'新时区'

datetime对象

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

datetime对象是包含来自date对象和time对象的所有信息的单一对象。

类方法

1
dtm.datetime.today()  # 查看本地当前日期时间
datetime.datetime(2022, 11, 22, 17, 36, 45, 863696)
1
dtm.datetime.utcnow()  # 查看UTC标准时区当前日期时间
datetime.datetime(2022, 11, 22, 9, 36, 46, 103993)
1
2
3
dtm.datetime.now(tz=tz1)  # 查看某个时区当前日期时间,当tz为None时与today()等价
# 如果tz不为None,那么它必须是tzinfo子类的一个实例。
# 可用来代替today()和utcnow()
datetime.datetime(2022, 11, 22, 17, 36, 46, 376150, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800), '新时区'))
1
dtm.datetime.utcnow()  # 类似于now(),但是没有tz属性,该函数会自动感知当前UTC时区
datetime.datetime(2022, 11, 22, 9, 36, 46, 520149)
1
dtm.datetime.now(tz1)
datetime.datetime(2022, 11, 22, 17, 36, 47, 247660, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800), '新时区'))
1
2
# 将时间戳转化为本地时间日期
dtm.datetime.fromtimestamp(time.time())
datetime.datetime(2022, 11, 22, 17, 36, 47, 665319)
1
2
# 将时间戳转化为UTC日期
dtm.datetime.utcfromtimestamp(time.time())
datetime.datetime(2022, 11, 22, 9, 36, 48, 113233)
1
2
# 查看距离公元1年1月1日特定的天数,所对应的日期时间,其中hour,minute,second和microsecond值均为0
dtm.datetime.fromordinal(738481)
datetime.datetime(2022, 11, 22, 0, 0)
1
2
3
# 返回一个对应于 date.isoformat() 和 datetime.isoformat() 所提供的某一种 date_string 的 datetime 对象。
# YYYY-MM-DD[*HH[:MM[:SS[.fff[fff]]]][+HH:MM[:SS[.ffffff]]]]
dtm.datetime.fromisoformat('2022-11-21 14:27:22.222333')
datetime.datetime(2022, 11, 21, 14, 27, 22, 222333)
1
2
3
# 互为逆操作
print(dtm.datetime.isocalendar(dtm.datetime.now())) # 返回指定datetime对象在的年份、当年的周数和星期数
print(dtm.datetime.fromisocalendar(2022, 47, 2)) # 根据年份、当年的周数和星期数,获取datetime对象
(2022, 47, 2)
2022-11-22 00:00:00
1
2
# 返回一个对应于date_string,根据format进行解析得到的datetime对象
dtm.datetime.strptime('Tue Nov 22 14:36:25 2022', '%a %b %d %H:%M:%S %Y')
datetime.datetime(2022, 11, 22, 14, 36, 25)
1
2
# 将date对象和time对象组合为datetime对象
dtm.datetime.combine(date1, t1)
datetime.datetime(2022, 11, 22, 16, 17, 22, 222333, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800), '新时区'))

类属性

1
dtm.datetime.min
datetime.datetime(1, 1, 1, 0, 0)
1
dtm.datetime.max
datetime.datetime(9999, 12, 31, 23, 59, 59, 999999)
1
dtm.datetime.resolution
datetime.timedelta(microseconds=1)

实例属性

1
2
datetime1 = dtm.datetime(2022, 11, 21, 14, 22, 36, 666555)
datetime1
datetime.datetime(2022, 11, 21, 14, 22, 36, 666555)
1
2
datetime2 = dtm.datetime.now()
datetime2
datetime.datetime(2022, 11, 22, 17, 38, 45, 292189)
1
2
3
4
5
6
7
8
# 默认实例属性是不可更改的,如果要更改需要使用replace方法
print(datetime1.year) # 获取年份
print(datetime1.month) # 获取月份
print(datetime1.hour) # 获取小时
print(datetime1.minute) # 获取分钟
print(datetime1.second) # 获取秒数
print(datetime1.microsecond) # 获取微秒数
print(datetime1.tzinfo) # 获取时区
2022
11
14
22
36
666555
None
1
datetime1.year = 2022  # 实例属性不可更改
---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

<ipython-input-197-c098b83ee9f7> in <module>
----> 1 datetime1.year = 2022  # 实例属性不可更改


AttributeError: attribute 'year' of 'datetime.date' objects is not writable

运算

1
2
# datetime对象间运算
datetime2 - datetime1
datetime.timedelta(days=1, seconds=11768, microseconds=625634)
1
2
3
4
# 定义时间差timedelta对象
d1 = dtm.timedelta(days=1)
# datetime对象与timedelta对象运算
datetime1 - d1
datetime.datetime(2022, 11, 20, 14, 22, 36, 666555)

比较

1
2
# 判断时间先后顺序
datetime1 < datetime2
True

实例方法

1
2
# datetime对象转化为date对象
datetime1.date()
datetime.date(2022, 11, 21)
1
2
# datetime对象转化为time对象
datetime1.time()
datetime.time(14, 22, 36, 666555)
1
2
# 与time()方法用法类似,多增加了一个时区(如果有会显示,默认是None不显示)
datetime1.timetz()
datetime.time(14, 22, 36, 666555)
1
2
3
4
# 修改datetime对象属性值
print('修改前:', datetime1)
datetime1 = datetime1.replace(year=2025)
print('修改后:', datetime1)
修改前: 2022-11-21 14:22:36.666555
修改后: 2025-11-21 14:22:36.666555
1
2
# 根据时区修改datetime对象
datetime1 = datetime1.astimezone(tz=tz1)
1
datetime1.tzname()
'新时区'
1
datetime1.utcoffset()
datetime.timedelta(seconds=28800)
1
datetime1.dst()
1
datetime1.tzname()
'新时区'
1
2
# 将datetime对象转化为元组类型时间数据
datetime1.timetuple()
time.struct_time(tm_year=2025, tm_mon=11, tm_mday=21, tm_hour=14, tm_min=22, tm_sec=36, tm_wday=4, tm_yday=325, tm_isdst=-1)
1
2
# 将datetime对象转化为元组类型时间数据(会根据datetime1.utcoffset()来标准化UTC时间)
datetime1.utctimetuple()
time.struct_time(tm_year=2025, tm_mon=11, tm_mday=21, tm_hour=6, tm_min=22, tm_sec=36, tm_wday=4, tm_yday=325, tm_isdst=0)

pandas

Timestamp对象

构造方法

利用字符串格式时间数据转化

pandas支持智能的将各种格式的时间数据转化为标准时间戳格式

1
2
3
# 获取当前时间
tm1 = pd.Timestamp.now()
tm1
Timestamp('2022-11-22 18:04:34.850491')
1
2
tm2 = pd.Timestamp('2022-11-21 16:12:12')
tm2
Timestamp('2022-11-21 16:12:12')
1
2
tm3 = pd.Timestamp('2022/11/21 16:12:12')
tm3
Timestamp('2022-11-21 16:12:12')
1
2
3
# 还可以使用pd.to_datetime()进行转换
tm4 = pd.to_datetime(time.ctime())
tm4
Timestamp('2022-11-22 18:04:59')

利用时间戳进行转换

1
pd.Timestamp(1669112020.1238306, unit='s')
Timestamp('2022-11-22 10:13:40.123830557')
1
2
d = pd.Timestamp(1669112020.1238306, unit='s', tz=tz1) # 添加时区(使用datetime.timezone对象)
d
Timestamp('2022-11-22 18:13:40.123830557+0800', tz='新时区')

通过直接指定相应时间属性值

1
2
pd.Timestamp(year=2022, month=11, day=21, hour=20,
minute=28, second=30, microsecond=30)
Timestamp('2022-11-21 20:28:30.000030')
1
2
d2 = pd.Timestamp(2022, 11, 30, 20, 26,30)
d2
Timestamp('2022-11-30 20:26:30')

属性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 查看时区信息
print(d.tz)
print(d.tzinfo)

# 查看标准时区时间
print(d.asm8)

# 查看当前时间是本年的第几周
print(d.weekofyear)
# 查看是周几
print(d.day_of_week) # 0表示周一
# 查看今天的本年的第几天
print(d.day_of_year)
# 查看本月一共多少天
print(d.days_in_month)
print(d.daysinmonth)

print(d.year) # 年
print(d.month) # 月
print(d.day) # 日
print(d.hour) # 时
print(d.minute) # 分
print(d.second) # 秒
print(d.nanosecond) # 毫秒
print(d.microsecond) # 微妙
print(d.quarter) # 刻钟(15min)数

print(d.is_leap_year) # 判断是否是闰年
print(d2.is_month_end) # 判断是否是本月最后一天
print(d.is_month_start) # 判断是否是本月第一天
print(d.is_year_end) # 判断是否是今年最后一天
print(d.is_year_start) # 判断是否是今天第一天
新时区
新时区
2022-11-22T10:13:40.123830557
47
1
326
30
30
2022
11
22
18
13
40
557
123830
4
False
True
False
False
False

方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 查看标准字符串格式
print(d.ctime())
# 查看星期数完整英文
print(d.day_name())

# 查看时间戳
print(d.timestamp())
# 将时间戳转化为Timestamp对象(本地时区)
print(d.fromtimestamp(d.timestamp()))
# 将时间戳转化为Timestamp对象(国际标准时区)
print(d.utcfromtimestamp(d.timestamp()))

# 查看距离公元1年1月1日多少天
print(d.toordinal() )
# 查看公元1年1月1日XX天,是什么时间
print(d.fromordinal(d.toordinal()))

# 查看d本年经过的周数,和星期数
print(d.isocalendar())
# 转化为元组格式时间数据,类似于time.localtime(),time.gmtime()
print(d.timetuple())
# 查看时区名称
print(d.tzname())
# 查看字符串标准格式数据
print(d.isoformat())
Tue Nov 22 18:13:40 2022
Tuesday
1669112020.123831
2022-11-22 18:13:40.123831
2022-11-22 10:13:40.123831
738481
2022-11-22 00:00:00
(2022, 47, 2)
time.struct_time(tm_year=2022, tm_mon=11, tm_mday=22, tm_hour=18, tm_min=13, tm_sec=40, tm_wday=1, tm_yday=326, tm_isdst=-1)
新时区
2022-11-22T18:13:40.123830557+08:00

Timedelta时间段

构造方法

通过字符串格式进行定义

1
2
# 完整写法
pd.Timedelta('2days 2hours 15minutes 30seconds')
Timedelta('2 days 02:15:30')
1
2
# 简写
pd.Timedelta('2d2h15min30s')
Timedelta('2 days 02:15:30')

通过整数值与指定单位定义

1
pd.Timedelta(150, unit='s')
Timedelta('0 days 00:02:30')
1
pd.Timedelta(1.5, unit='d')
Timedelta('1 days 12:00:00')

直接指定相应属性定义

1
pd.Timedelta(days=2, hours=15, minutes=30, seconds=30)
Timedelta('2 days 15:30:30')
1
2
3
4
# 还可以使用to_timedelta()方法进行构造
print(pd.to_timedelta('2d'))
print(pd.to_timedelta('2d3m'))
print(pd.to_timedelta(200, unit='s'))
2 days 00:00:00
2 days 00:03:00
0 days 00:03:20

date_range时间区间

其中每个元素都为Timestamp对象

指定起点、终点和数据量

1
pd.date_range(start='2022-11-1', end='2022-11-30', periods=30)
DatetimeIndex(['2022-11-01', '2022-11-02', '2022-11-03', '2022-11-04',
               '2022-11-05', '2022-11-06', '2022-11-07', '2022-11-08',
               '2022-11-09', '2022-11-10', '2022-11-11', '2022-11-12',
               '2022-11-13', '2022-11-14', '2022-11-15', '2022-11-16',
               '2022-11-17', '2022-11-18', '2022-11-19', '2022-11-20',
               '2022-11-21', '2022-11-22', '2022-11-23', '2022-11-24',
               '2022-11-25', '2022-11-26', '2022-11-27', '2022-11-28',
               '2022-11-29', '2022-11-30'],
              dtype='datetime64[ns]', freq=None)

指定起点、终点和步长

1
pd.date_range(start='2022-11-1', end='2022-11-30', freq='3d')
DatetimeIndex(['2022-11-01', '2022-11-04', '2022-11-07', '2022-11-10',
               '2022-11-13', '2022-11-16', '2022-11-19', '2022-11-22',
               '2022-11-25', '2022-11-28'],
              dtype='datetime64[ns]', freq='3D')

指定起点、数据量和步长

1
pd.date_range(start='2022-11-3', periods=10, freq='2d')
DatetimeIndex(['2022-11-03', '2022-11-05', '2022-11-07', '2022-11-09',
               '2022-11-11', '2022-11-13', '2022-11-15', '2022-11-17',
               '2022-11-19', '2022-11-21'],
              dtype='datetime64[ns]', freq='2D')

指定终点、数据量和步长

1
pd.date_range(end='2022-11-3 9:00:00', periods=10, freq='3d')
DatetimeIndex(['2022-10-07 09:00:00', '2022-10-10 09:00:00',
               '2022-10-13 09:00:00', '2022-10-16 09:00:00',
               '2022-10-19 09:00:00', '2022-10-22 09:00:00',
               '2022-10-25 09:00:00', '2022-10-28 09:00:00',
               '2022-10-31 09:00:00', '2022-11-03 09:00:00'],
              dtype='datetime64[ns]', freq='3D')
-------------本文结束感谢您的阅读-------------