请看下面这个帖子,你相信2038年是世界末日吗?试分析为什么手机日期设置出现这种怪事。

确实会发生这种情况

(oppo 的color12os)

安卓系统是在Linux内核的基础上构建的,采用的时间戳是基于32位Unix格式。可以根据这个链接查看Unix 时间戳时间戳(Unix timestamp)转换工具 - 在线工具 (tool.lu)

原因:

这种格式将时间表示为从1970年1月1日0时0分0秒开始的秒数,按秒为单位进行增减。我们现在使用的安卓、苹果系统都属于类Unix系统,采用了同样的方案,其中有符号数用补码来表示。

而32位机器中所能表示的最大整数(有符号数)的值为2^31 -1(二进制表示为011......111),即2147483647,此时如果再增加1,数据就会出现“装不下”的情况,发生溢出,符号位由0变为1,二进制表示就会变成(100......000),其对应的原码为-2^31,即-2147483648。1970年1月1日00:00:00 + 2147483647秒 = 2038年1月19日 3点14分7秒,因此下一秒就会变成1970年1月1日00:00:00 - 2147483648秒=1901年12月13日20时45分52秒

不愧是反方向的钟啊(doge)

解决方法:

1.将系统中的时间表示从32位Unix时间戳转换为64位Unix时间戳。使用64位时间戳可以显著延长时间范围,相当于计算机由32位变为64位所带来内存的显著变化,它可以表示更大的整数值,可以表示的时间范围大约是从公元前292亿年到公元292亿年,从而避免了32位时间戳的限制。

2.使用支持更大时间范围的日期和时间库,直接改变初始时间是不太可行的,需要修改系统的底层实现和许多相关的应用程序和库,很多系统和软件都是基于Unix时间戳的标准来进行时间计算和表示的(千年虫问题)

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
当然可以!下面是一个简单的末日题材文本对话游戏的Python代码示例: ```python import time def delay_print(text): for char in text: print(char, end='', flush=True) time.sleep(0.05) print() def get_user_choice(options): valid_choices = [str(i) for i in range(1, len(options) + 1)] user_choice = input("选择一个选项: ") while user_choice not in valid_choices: user_choice = input("选择有效的选项: ") return int(user_choice) def game_intro(): delay_print("你醒来时,发现整个城市已经被废墟和尸体所覆盖。") delay_print("你现在身处一间陌生的屋子里,一切都在废墟中。") delay_print("你的任务是尽快逃离这个城市,找到其他幸存者并寻找生存策略。") delay_print("做好选择,生存下去!") def game(): options = ["去探索周围的房间", "搜寻食物和水源", "寻找其他幸存者", "前往城市边缘", "在这里等待援助"] delay_print("你现在可以做出以下选择:") for i, option in enumerate(options): print(f"{i+1}. {option}") choice = get_user_choice(options) if choice == 1: delay_print("你进入了周围的房间,发现一些有用的物品。") # 继续游戏逻辑... elif choice == 2: delay_print("你搜寻到了一些食物和水源,能够延长生存时间。") # 继续游戏逻辑... elif choice == 3: delay_print("你找到了一群幸存者,你们决定联合起来。") # 继续游戏逻辑... elif choice == 4: delay_print("你决定前往城市边缘,希望能找到更安全的地方。") # 继续游戏逻辑... elif choice == 5: delay_print("你决定在这里等待援助,但日子一天天过去,援助却没有到来。") # 继续游戏逻辑... else: delay_print("出现了一些错误,游戏结束。") return # 继续游戏逻辑... # 根据玩家选择的选项,进行下一步的对话和情节发展 # 游戏开始 game_intro() game() ``` 在这个简单的游戏中,玩家可以选择不同的选项来推动情节的发展。你可以根据自己的需求来扩展和修改代码,以创建更加复杂和有趣的文本对话游戏。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值