【教学类-48-01】20240205对称的“年”和“月日”(如2030 0302)

【教学类-48-01】20240205对称的“年”和“月日”(如2030 0302)_第1张图片

背景需求:

昨天旧友聚会,一位朋友提到她是20200202结婚的,今年正好4周年花果婚,“选那天因为正好是一个对称的年和月日。”

【教学类-48-01】20240205对称的“年”和“月日”(如2030 0302)_第2张图片

于是我想算算看,这种对称的特殊日期(年与月日对称)有几天呢?

参考内容

python 获取指定范围所有日期_python获取一段时间的所有日期对象-CSDN博客文章浏览阅读680次。python 获取指定范围所有日期方法有很多,这不是唯一的答案。可以根据自己的需要进行修改,代码如下:import datetimedef gen_dates(b_date, days): day = datetime.timedelta(days=1) for i in range(days): yield b_date + day * idef get_date_list(start=None, end=None): if start is Non_python获取一段时间的所有日期对象https://blog.csdn.net/love_521_/article/details/113983984?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-4-113983984-blog-110731910.235%5Ev43%5Epc_blog_bottom_relevance_base6&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-4-113983984-blog-110731910.235%5Ev43%5Epc_blog_bottom_relevance_base6&utm_relevant_index=9

设计过程:

修改上述代码获得1990-2100年之间的所有年月日,并以20200220的样式排列

【教学类-48-01】20240205对称的“年”和“月日”(如2030 0302)_第3张图片

我改成到2100年12月31日

【教学类-48-01】20240205对称的“年”和“月日”(如2030 0302)_第4张图片

遍历提取年的数字【0:4】,然后将其倒置翻转,如果翻转后的数字与“月日”数字【4:8】相同,就提取出来,否则就放弃

【教学类-48-01】20240205对称的“年”和“月日”(如2030 0302)_第5张图片

代码展示:

'''
2900-2100年之间年月日8个数字4个4个对称的年月日
作者:阿夏
日期:2024年2月5日
'''

# https://blog.csdn.net/love_521_/article/details/113983984?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-4-113983984-blog-110731910.235%5Ev43%5Epc_blog_bottom_relevance_base6&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-4-113983984-blog-110731910.235%5Ev43%5Epc_blog_bottom_relevance_base6&utm_relevant_index=9
import datetime


# def gen_dates(b_date, days):
#     day = datetime.timedelta(days=1)
#     for i in range(days):
#         yield b_date + day * i


# def get_date_list(start=None, end=None):
#     if start is None:
#         start = datetime.datetime.strptime('2018-02-02', '%Y-%m-%d')
#     else:
#         start = datetime.datetime.strptime(start, '%Y-%m-%d')

#     if end is None:
#         end = datetime.datetime.now()
#       
#     data = []
#     for d in gen_dates(start, (end - start).days):
#         m = datetime.datetime.strftime(d, '%Y-%m-%d')
#         data.append(m)  # 如果你想添加的为日期类型 m改为 d即可
#     print(data, data.__len__(), sep='\n')

# # 起始日期
# get_date_list(start='2020-02-02', end=None))
        
def gen_dates(b_date, days):
    day = datetime.timedelta(days=1)
    for i in range(days):
        yield b_date + day * i
        
def get_date_list(start=None, end=None):
    if start is None:
        start = datetime.datetime.strptime('20180202', '%Y%m%d')
    else:
        start = datetime.datetime.strptime(start, '%Y%m%d')

    if end is None:
        # end = datetime.datetime.now()
        end = datetime.datetime.strptime('20280202', '%Y%m%d')
    else:
        end = datetime.datetime.strptime(end, '%Y%m%d')
        
    data = []
    for d in gen_dates(start, (end -start).days):
        m = datetime.datetime.strftime(d, '%Y%m%d')
        data.append(m)  # 如果你想添加的为日期类型 m改为 d即可
    print(data, data.__len__(), sep='\n')

    t=[]
    # 遍历
    for x in range(len(data)):
        b=data[x][0:4]# 提取“年”四个数字 2020
        c =b[::-1] # 倒置变成0202
        if c==data[x][4:8]: # 如果有月日的0202等于倒置的年份0202,就提取否则就跳过
            d=b+c
            print('符合对称的日期',d)
            t.append(d)

    print('符合对称的日期有',len(t),'天')
      


# 起始日期
get_date_list(start='19900101', end='21001231')
# 40541

# 符合对称的日期 20011002
# 符合对称的日期 20100102
# 符合对称的日期 20111102
# 符合对称的日期 20200202
# 符合对称的日期 20211202
# 符合对称的日期 20300302
# 符合对称的日期 20400402
# 符合对称的日期 20500502
# 符合对称的日期 20600602
# 符合对称的日期 20700702
# 符合对称的日期 20800802
# 符合对称的日期 20900902
# 符合对称的日期有 12 天

【教学类-48-01】20240205对称的“年”和“月日”(如2030 0302)_第6张图片

符合对称的日期 20011002
符合对称的日期 20100102
符合对称的日期 20111102
符合对称的日期 20200202
符合对称的日期 20211202
符合对称的日期 20300302
符合对称的日期 20400402
符合对称的日期 20500502
符合对称的日期 20600602
符合对称的日期 20700702
符合对称的日期 20800802
符合对称的日期 20900902
符合对称的日期有 12 天

【教学类-48-01】20240205对称的“年”和“月日”(如2030 0302)_第7张图片

这12天的确是对称的年和月日

我奇怪怎么都是2000-2099年之间,为什么没有1900-1999年的,仔细一想。1900倒置就是0091,“日”最多30天,所以20世纪(19XX)开头的年份不可能出现对称数字。

其他日期范围的测算

4058edf3c8fd4ef3baa19a0c4c1ee5b2.png

日期太多了,生成日期要卡一会儿儿

【教学类-48-01】20240205对称的“年”和“月日”(如2030 0302)_第8张图片【教学类-48-01】20240205对称的“年”和“月日”(如2030 0302)_第9张图片

公元1000年1月1日到公元9999年1月1日,但愿地球能生存这么久

一共有3287181天(328万181天)

【教学类-48-01】20240205对称的“年”和“月日”(如2030 0302)_第10张图片

符合对称的日期 10011001
符合对称的日期 10100101
符合对称的日期 10111101
符合对称的日期 10200201
符合对称的日期 10211201
符合对称的日期 10300301
符合对称的日期 10400401
符合对称的日期 10500501
符合对称的日期 10600601
符合对称的日期 10700701
符合对称的日期 10800801
符合对称的日期 10900901
符合对称的日期 11011011
符合对称的日期 11100111
符合对称的日期 11111111
符合对称的日期 11200211
符合对称的日期 11211211
符合对称的日期 11300311
符合对称的日期 11400411
符合对称的日期 11500511
符合对称的日期 11600611
符合对称的日期 11700711
符合对称的日期 11800811
符合对称的日期 11900911
符合对称的日期 12011021
符合对称的日期 12100121
符合对称的日期 12111121
符合对称的日期 12200221
符合对称的日期 12211221
符合对称的日期 12300321
符合对称的日期 12400421
符合对称的日期 12500521
符合对称的日期 12600621
符合对称的日期 12700721
符合对称的日期 12800821
符合对称的日期 12900921
符合对称的日期 13011031
符合对称的日期 13100131
符合对称的日期 13211231
符合对称的日期 13300331
符合对称的日期 13500531
符合对称的日期 13700731
符合对称的日期 13800831
符合对称的日期 20011002
符合对称的日期 20100102
符合对称的日期 20111102
符合对称的日期 20200202
符合对称的日期 20211202
符合对称的日期 20300302
符合对称的日期 20400402
符合对称的日期 20500502
符合对称的日期 20600602
符合对称的日期 20700702
符合对称的日期 20800802
符合对称的日期 20900902
符合对称的日期 21011012
符合对称的日期 21100112
符合对称的日期 21111112
符合对称的日期 21200212
符合对称的日期 21211212
符合对称的日期 21300312
符合对称的日期 21400412
符合对称的日期 21500512
符合对称的日期 21600612
符合对称的日期 21700712
符合对称的日期 21800812
符合对称的日期 21900912
符合对称的日期 22011022
符合对称的日期 22100122
符合对称的日期 22111122
符合对称的日期 22200222
符合对称的日期 22211222
符合对称的日期 22300322
符合对称的日期 22400422
符合对称的日期 22500522
符合对称的日期 22600622
符合对称的日期 22700722
符合对称的日期 22800822
符合对称的日期 22900922
符合对称的日期 30011003
符合对称的日期 30100103
符合对称的日期 30111103
符合对称的日期 30200203
符合对称的日期 30211203
符合对称的日期 30300303
符合对称的日期 30400403
符合对称的日期 30500503
符合对称的日期 30600603
符合对称的日期 30700703
符合对称的日期 30800803
符合对称的日期 30900903
符合对称的日期 31011013
符合对称的日期 31100113
符合对称的日期 31111113
符合对称的日期 31200213
符合对称的日期 31211213
符合对称的日期 31300313
符合对称的日期 31400413
符合对称的日期 31500513
符合对称的日期 31600613
符合对称的日期 31700713
符合对称的日期 31800813
符合对称的日期 31900913
符合对称的日期 32011023
符合对称的日期 32100123
符合对称的日期 32111123
符合对称的日期 32200223
符合对称的日期 32211223
符合对称的日期 32300323
符合对称的日期 32400423
符合对称的日期 32500523
符合对称的日期 32600623
符合对称的日期 32700723
符合对称的日期 32800823
符合对称的日期 32900923
符合对称的日期 40011004
符合对称的日期 40100104
符合对称的日期 40111104
符合对称的日期 40200204
符合对称的日期 40211204
符合对称的日期 40300304
符合对称的日期 40400404
符合对称的日期 40500504
符合对称的日期 40600604
符合对称的日期 40700704
符合对称的日期 40800804
符合对称的日期 40900904
符合对称的日期 41011014
符合对称的日期 41100114
符合对称的日期 41111114
符合对称的日期 41200214
符合对称的日期 41211214
符合对称的日期 41300314
符合对称的日期 41400414
符合对称的日期 41500514
符合对称的日期 41600614
符合对称的日期 41700714
符合对称的日期 41800814
符合对称的日期 41900914
符合对称的日期 42011024
符合对称的日期 42100124
符合对称的日期 42111124
符合对称的日期 42200224
符合对称的日期 42211224
符合对称的日期 42300324
符合对称的日期 42400424
符合对称的日期 42500524
符合对称的日期 42600624
符合对称的日期 42700724
符合对称的日期 42800824
符合对称的日期 42900924
符合对称的日期 50011005
符合对称的日期 50100105
符合对称的日期 50111105
符合对称的日期 50200205
符合对称的日期 50211205
符合对称的日期 50300305
符合对称的日期 50400405
符合对称的日期 50500505
符合对称的日期 50600605
符合对称的日期 50700705
符合对称的日期 50800805
符合对称的日期 50900905
符合对称的日期 51011015
符合对称的日期 51100115
符合对称的日期 51111115
符合对称的日期 51200215
符合对称的日期 51211215
符合对称的日期 51300315
符合对称的日期 51400415
符合对称的日期 51500515
符合对称的日期 51600615
符合对称的日期 51700715
符合对称的日期 51800815
符合对称的日期 51900915
符合对称的日期 52011025
符合对称的日期 52100125
符合对称的日期 52111125
符合对称的日期 52200225
符合对称的日期 52211225
符合对称的日期 52300325
符合对称的日期 52400425
符合对称的日期 52500525
符合对称的日期 52600625
符合对称的日期 52700725
符合对称的日期 52800825
符合对称的日期 52900925
符合对称的日期 60011006
符合对称的日期 60100106
符合对称的日期 60111106
符合对称的日期 60200206
符合对称的日期 60211206
符合对称的日期 60300306
符合对称的日期 60400406
符合对称的日期 60500506
符合对称的日期 60600606
符合对称的日期 60700706
符合对称的日期 60800806
符合对称的日期 60900906
符合对称的日期 61011016
符合对称的日期 61100116
符合对称的日期 61111116
符合对称的日期 61200216
符合对称的日期 61211216
符合对称的日期 61300316
符合对称的日期 61400416
符合对称的日期 61500516
符合对称的日期 61600616
符合对称的日期 61700716
符合对称的日期 61800816
符合对称的日期 61900916
符合对称的日期 62011026
符合对称的日期 62100126
符合对称的日期 62111126
符合对称的日期 62200226
符合对称的日期 62211226
符合对称的日期 62300326
符合对称的日期 62400426
符合对称的日期 62500526
符合对称的日期 62600626
符合对称的日期 62700726
符合对称的日期 62800826
符合对称的日期 62900926
符合对称的日期 70011007
符合对称的日期 70100107
符合对称的日期 70111107
符合对称的日期 70200207
符合对称的日期 70211207
符合对称的日期 70300307
符合对称的日期 70400407
符合对称的日期 70500507
符合对称的日期 70600607
符合对称的日期 70700707
符合对称的日期 70800807
符合对称的日期 70900907
符合对称的日期 71011017
符合对称的日期 71100117
符合对称的日期 71111117
符合对称的日期 71200217
符合对称的日期 71211217
符合对称的日期 71300317
符合对称的日期 71400417
符合对称的日期 71500517
符合对称的日期 71600617
符合对称的日期 71700717
符合对称的日期 71800817
符合对称的日期 71900917
符合对称的日期 72011027
符合对称的日期 72100127
符合对称的日期 72111127
符合对称的日期 72200227
符合对称的日期 72211227
符合对称的日期 72300327
符合对称的日期 72400427
符合对称的日期 72500527
符合对称的日期 72600627
符合对称的日期 72700727
符合对称的日期 72800827
符合对称的日期 72900927
符合对称的日期 80011008
符合对称的日期 80100108
符合对称的日期 80111108
符合对称的日期 80200208
符合对称的日期 80211208
符合对称的日期 80300308
符合对称的日期 80400408
符合对称的日期 80500508
符合对称的日期 80600608
符合对称的日期 80700708
符合对称的日期 80800808
符合对称的日期 80900908
符合对称的日期 81011018
符合对称的日期 81100118
符合对称的日期 81111118
符合对称的日期 81200218
符合对称的日期 81211218
符合对称的日期 81300318
符合对称的日期 81400418
符合对称的日期 81500518
符合对称的日期 81600618
符合对称的日期 81700718
符合对称的日期 81800818
符合对称的日期 81900918
符合对称的日期 82011028
符合对称的日期 82100128
符合对称的日期 82111128
符合对称的日期 82200228
符合对称的日期 82211228
符合对称的日期 82300328
符合对称的日期 82400428
符合对称的日期 82500528
符合对称的日期 82600628
符合对称的日期 82700728
符合对称的日期 82800828
符合对称的日期 82900928
符合对称的日期 90011009
符合对称的日期 90100109
符合对称的日期 90111109
符合对称的日期 90200209
符合对称的日期 90211209
符合对称的日期 90300309
符合对称的日期 90400409
符合对称的日期 90500509
符合对称的日期 90600609
符合对称的日期 90700709
符合对称的日期 90800809
符合对称的日期 90900909
符合对称的日期 91011019
符合对称的日期 91100119
符合对称的日期 91111119
符合对称的日期 91200219
符合对称的日期 91211219
符合对称的日期 91300319
符合对称的日期 91400419
符合对称的日期 91500519
符合对称的日期 91600619
符合对称的日期 91700719
符合对称的日期 91800819
符合对称的日期 91900919
符合对称的日期 92011029
符合对称的日期 92100129
符合对称的日期 92111129
符合对称的日期 92200229
符合对称的日期 92211229
符合对称的日期 92300329
符合对称的日期 92400429
符合对称的日期 92500529
符合对称的日期 92600629
符合对称的日期 92700729
符合对称的日期 92800829
符合对称的日期 92900929
符合对称的日期有 331 天

结论:8999年=328万181天,“年”与“月日”对称的日期只有331天。

很幸运我们生在21世纪,能轮到12次对称日期,其中的5次已经过去了,但愿你能抓住剩下的7次,去实现自己的梦想。

符合对称的日期 20011002
符合对称的日期 20100102
符合对称的日期 20111102
符合对称的日期 20200202
符合对称的日期 20211202
符合对称的日期 20300302
符合对称的日期 20400402
符合对称的日期 20500502
符合对称的日期 20600602
符合对称的日期 20700702
符合对称的日期 20800802
符合对称的日期 20900902


 

你可能感兴趣的:(Python,python)