python中isoweekday和weekday的区别及说明

2022-07-18 20:02:11
目录
isoweekday和weekday的区别datetime.date类介绍

isoweekday和weekday的区别

import datetime
datetime.datetime.now() 表示当前时间
datetime.datetime.now().isoweekday() # 返回1-7,代表周一到周日,当前时间所在本周第几天;

datetime.datetime.now().weekday() # 返回的0-6,代表周一到周日

另外,标准格式 %w 中,1-6表示周一到周六,0代表周日

import datetime
now_time = datetime.datetime.now() # 当前时间
print(now_time)
day_num = now_time.isoweekday() # 当前时间所在本周第几天
print(day_num)
monday = (now_time - datetime.timedelta(days=day_num-1)) # 本周周一时间
print(monday)

----------
2019-06-20 09:45:07.349007
4
2019-06-17 09:45:07.349007

datetime.date类介绍

date类是一个日期类,由年、月、日组成。

由于Python也是面向对象编程语言,所以针对类,就会有构造函数,该类的构造函数如下: 

class>

    year: 表示年,范围[MINYEAR, MAXYEAR],即[1, 9999] month: 表示月,范围[1, 12] day:一月中第几天,最大值根据给定的year,month参数来决定。例如闰年2月份有29天 

    一、date对象所能表示的最大最小日期,返回的是datetime.date类型的对象

    >>> import datetime
    >>> datetime.date.max
    datetime.date(9999, 12, 31)
    >>> print datetime.date.min
    0001-01-01
    >>>

    二、date.today() 函数:返回一个当前本地日期的date类型的对象

    >>> datetime.date.today()
    datetime.date(2018, 1, 16)
    >>> print datetime.date.today()
    2018-01-16
    >>>

    三、date.fromtimestamp()函数:根据给定的时间戳,返回一个date对象

    >>> import datetime
    >>> import time
    >>> now=time.time()
    >>> print now
    1516110787.69
    >>> s=datetime.date.fromtimestamp(now)
    >>> s
    datetime.date(2018, 1, 16)
    >>> print s
    2018-01-16
    >>>

    四、date.weekday()函数:参数必须是一个date类型的对象,返回该日期是一周中的第几天。返回值是一个整型。星期一,返回0;星期二,返回1。。。

    >>> s=datetime.date.today()
    >>> print s
    2018-01-16
    >>> s
    datetime.date(2018, 1, 16)
    >>> type(s)
    <type 'datetime.date'>
    >>> d=datetime.date.weekday(s)
    >>> d
    1
    >>> print d
    1
    >>> type(d)
    <type 'int'>
    >>>

    五、date.isoweekday()函数:该函数需要一个datetime.date类型的参数。返回weekday中的星期几,星期一,返回1;星期二,返回2;以此类推。

    >>> s=datetime.date.today()
    >>> print s
    2018-01-16
    >>> s
    datetime.date(2018, 1, 16)
    >>> d=datetime.date.isoweekday(s)
    >>> d
    2
    >>> type(d)
    <type 'int'>
    >>>

    六、date.isocalendar()函数:该函数需要一个datetime.date类型的参数。返回date类型对象中的year(年),week(周),weekday(一周中的第几天),返回值是一个元组

    >>> s=datetime.date.today()
    >>> print s
    2018-01-16
    >>> s
    datetime.date(2018, 1, 16)
    >>> d=datetime.date.isocalendar(s)
    >>> d
    (2018, 3, 2)
    >>> print d
    (2018, 3, 2)   ----代表2018年中的第3周,第三周中的第2天
    >>> type(d)
    <type 'tuple'>
    >>>
    >>> s=datetime.date(2018,1,14)
    >>> s
    datetime.date(2018, 1, 14)
    >>> print s
    2018-01-14
    >>> d
    (2018, 3, 2)
    >>> d=datetime.date.isocalendar(s)
    >>> d
    (2018, 2, 7)     ----代表2018年中的第3周,第三周中的第7天
    >>>

    七、date.strftime(fmt) 返回自定义格式的时间字符串。fmt是自定义的时间格式

    >>> a=datetime.date.today()
    >>> a
    datetime.date(2018, 1, 16)
    >>> b=a.strftime("%Y-%m-%d %H:%M:%S")
    >>> b
    '2018-01-16 00:00:00'
    >>> print b
    2018-01-16 00:00:00
    >>> type(b)
    <type 'str'>
    >>>

    八、.replace(year, month, day):生成一个新的日期对象  用参数指定的年,月,日代替原有对象中的属性。(原有对象仍保持不变)

    >>> date1
    datetime.date(2018, 1, 16)
    >>> date_new=date1.replace(year=2017)
    >>> date_new
    datetime.date(2017, 1, 16)
    >>> date_new=date1.replace(day=30)
    >>> date_new
    datetime.date(2018, 1, 30)
    >>> 

    九、日期的其他操作--日期加上一个时间间隔(datetime.timedela类的对象)

    >>> now=datetime.date.today()
    >>> now
    datetime.date(2018, 1, 16)
    >>> print now
    2018-01-16
    >>> b=datetime.timedelta(days=10)
    >>> b
    datetime.timedelta(10)
    >>> type(b)
    <type 'datetime.timedelta'>
    >>> print b
    10 days, 0:00:00
    >>> print now+b
    2018-01-26
    >>> print now-b
    2018-01-06
    >>> print now-b-b
    2017-12-27
    >>>

    十、日期的其他操作--两个date类型对象相减。返回两个日期的间隔对象,即:datetime.timedelta类型的对象

    >>> date1=datetime.date.today()
    >>> date2=date1.replace(day=19)
    >>> print date1
    2018-01-16
    >>> print date2
    2018-01-19
    >>> print type(date1),type(date2)
    <type 'datetime.date'> <type 'datetime.date'>
    >>> print date2-date1
    3 days, 0:00:00
    >>> print date1-date2
    -3 days, 0:00:00
    >>> print date2+datetime.timedelta(days=35)
    2018-02-23
    >>> print type(date2-date1)
    <type 'datetime.timedelta'>
    >>>

    十一、日期的其它操作--比较日期大小

    date1 < date2 返回比较结果布尔值,真返回True,假返回False 

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持易采站长站。