V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
kvibert1
V2EX  ›  程序员

手机开飞行模式微信不会调用系统时间吗?

  •  
  •   kvibert1 · 2023-06-09 12:35:23 +08:00 via iPhone · 2424 次点击
    这是一个创建于 561 天前的主题,其中的信息可能已经有所发展或是发生改变。
    手机开飞行模式,并且修改系统时间为一个不正确的时间,在微信里面发送一条消息,这条消息上面的时间为什么会显示一个正确的时间呢,难道微信不是调用的系统时间吗?
    20 条回复    2023-06-10 00:54:36 +08:00
    NoOneNoBody
        1
    NoOneNoBody  
       2023-06-09 12:38:18 +08:00
    服务器时间
    kvibert1
        2
    kvibert1  
    OP
       2023-06-09 12:39:07 +08:00 via iPhone
    @NoOneNoBody 已经开了飞行模式
    finab
        3
    finab  
       2023-06-09 12:42:48 +08:00   ❤️ 2
    我测试了一下
    调整时间后,有网进入微信,这个时间显示的是正确时间,并且之后断网也一直正确
    调整时间后,断网进入微信,这个时间就错了

    也就是说,如果微信有网状态下与服务器通信了,会维护一个时间差值,之后的计算会加上这个时间差值来计算出正确的时间
    finab
        4
    finab  
       2023-06-09 12:43:11 +08:00
    另外 iPhone 的飞行模式,是不关 wifi 的
    kvibert1
        5
    kvibert1  
    OP
       2023-06-09 12:45:04 +08:00 via iPhone
    @finab 请问你的微信版本号是多少呢
    finab
        6
    finab  
       2023-06-09 12:50:04 +08:00
    @kvibert1 8.0.29 ,最新版也一样
    彻底断网后,调整时间,打开微信,时间就错了
    NoOneNoBody
        7
    NoOneNoBody  
       2023-06-09 13:02:52 +08:00
    你这样想:中国在早上发一条信息到美国西岸,对方收到显示的时间是什么?
    因为跨国际日期变更线,如果只按发送方时间,接收方会显示一个“穿越”信息
    微信逻辑如何我不清楚,我写的话就肯定以服务器进出时间为标准,客户端按本地习惯显示

    其实不止微信,任何跨时区的服务,在处理显示时间的逻辑都不应按客户端为标准
    我觉得你应该做这个测试才对:断网显示错误时间,联网后它会自动修正么?
    kvibert1
        8
    kvibert1  
    OP
       2023-06-09 14:01:11 +08:00 via iPhone
    @finab 为什么我这边最新版 8.0.37 改成错误的时间再关闭网络连接,会显示正确的时间呢?
    villivateur
        9
    villivateur  
       2023-06-09 14:01:17 +08:00
    @NoOneNoBody 你举的例子不正确,时区跟时间是两个概念,全球不管哪里都是一个时间,只不过实际显示的时候会加上时区偏移
    NoOneNoBody
        10
    NoOneNoBody  
       2023-06-09 14:13:33 +08:00
    @villivateur #9
    嗯,你从我的回复里面读到的只是时区?但我说的点是服务器和客户端

    好吧,换个例子,A 、B 客户端时区相同,A 因为某些原因系统时间不准确,快了几分钟,发信息到服务器(网站或 SNS),B 马上看到,中间网络延时几秒等忽略,B 看到 A 的发帖时间是 A 客户端的“未来时间”么?服务器肯定要按自己标准调整的吧?

    用时区举例只是增加距离感,易读而已
    RiverMud
        11
    RiverMud  
       2023-06-09 14:35:22 +08:00 via iPhone
    @NoOneNoBody
    @kvibert1
    Android iOS 最新版都试了,复现不了,怎么搞都是正确时间。

    我来重启试试
    NoOneNoBody
        12
    NoOneNoBody  
       2023-06-09 14:42:47 +08:00
    @RiverMud #11
    我对你有种莫名的敬仰,一个无关使用的小问题,有反复求证的精神和耐心
    我的话,估计试两次就“算了”

    你是 OP 的小号么?
    RiverMud
        13
    RiverMud  
       2023-06-09 14:53:04 +08:00
    重启后可以复现,虽然 iOS 和 Andorid 的情况不完全一样,但基本符合 @finab 的推论。

    @kvibert1 你说的情况应该是进程完全没杀掉,完全断网改了时间杀了进程后重启下再打开微信发送信息试试。

    上一条回复 @ 错了
    RiverMud
        14
    RiverMud  
       2023-06-09 14:54:18 +08:00
    @NoOneNoBody 在摸鱼,嘿嘿。
    kkocdko
        15
    kkocdko  
       2023-06-09 17:14:25 +08:00
    @NoOneNoBody #7 会使用 UTC 时间,不会有问题的。
    jiuhuicinv
        16
    jiuhuicinv  
       2023-06-09 17:42:49 +08:00
    但无网情况下发不出消息 有网了重发还是对的上正确时间 也就是说这个问题并不会扰乱消息记录时间轴
    infun
        17
    infun  
       2023-06-09 17:46:03 +08:00
    @RiverMud 分明是有求知探索精神,哪里摸鱼了
    MC
        18
    MC  
       2023-06-09 18:16:24 +08:00
    时间是服务器时间,显示时间按照你所在时区。
    飞行模式下,只要是联网的,就会判断你的准确时区,然后微信根据你的时区来给你反馈时间。
    kvibert1
        19
    kvibert1  
    OP
       2023-06-09 23:50:36 +08:00 via iPhone
    @RiverMud 最终确认是没有杀进程,重启一下手机就不会显示正确的时间了
    placeholder
        20
    placeholder  
       2023-06-10 00:54:36 +08:00
    我想知道安卓机如果开飞行模式,会不会全手机广播一下子,告诉各个应用,哥要飞行了,你们要干啥抓紧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2891 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 08:29 · PVG 16:29 · LAX 00:29 · JFK 03:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.