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

啊,这疯狂的世界

  •  
  •   kright · 27 天前 · 3375 次点击
    起因是苹果订阅通知给的时间:
    "purchaseDate": 1752074788000 。
    转换了一下,发现是北京时间:2025-07-09 23:26:28 。是一个来自未来的时间,然后就去问 ai 。

    首先是豆包:
    苹果订阅通知中的 purchaseDate: 1752074788000 是一个毫秒级时间戳(从 UTC 时间 1970-01-01 00:00:00 开始计算的毫秒数),对应的具体时间如下:
    1. UTC 时间(世界协调时间)
    转换后为:
    2025 年 6 月 10 日 15:26:28 UTC
    2. 北京时间( UTC+8 )
    由于北京时间比 UTC 快 8 小时,转换后为:
    2025 年 6 月 10 日 23:26:28

    然后是 ds:
    将 1752074788000 转换为人类可读时间:

    毫秒 → 秒:1752074788000 / 1000 = 1752074788 秒
    UTC 时间:2025-07-09 09:26:28 UTC

    最后是 kimi:
    转换结果( UTC 时间):
    2025 年 07 月 09 日 星期三 07:26:28 UTC
    如果你在中国(东八区 / Asia/Shanghai ):
    2025 年 07 月 09 日 星期三 15:26:28

    这三个 ai 都像模像样的给出了示例代码,分别是 js ,python 以及在线网站解析
    遗憾的是,根据代码怎么跑,都是:2025-07-09 23:26:28 。
    但是每一个 ai 都信誓旦旦的说自己的结果是绝对准确的。

    最后我还是想不通,苹果为什么会给一个未来的时间戳。
    10 条回复    2025-07-13 00:13:05 +08:00
    NoOneNoBody
        1
    NoOneNoBody  
       27 天前
    提醒:欧洲现在是夏令时,东八区时差应该只有 7 小时

    其他我就不研究了,我也搞不懂为啥给个看着像 UTC ,但实际适合东八区的时间
    Shatyuka
        2
    Shatyuka  
       27 天前   ❤️ 1
    我有一计,你等到明天就没问题了(
    512357301
        3
    512357301  
       27 天前 via Android
    确实很怪,那你实际是什么时候收到的这个通知呢?你说一下实际时间,这样比较好判断原因。
    也可以给下其他字段,辅助判断下原因,现在只有这一个字段,无从下手。。。
    另外,不要让大模型 AI 做题,特别是 1+1=2 这种有固定答案的,大模型 AI 做不准,它适合做开放性的题目。小模型 AI 才适合做题呢
    qxmqh
        4
    qxmqh  
       27 天前
    这个是不是 提前收取订阅费用,我记得有这种操作吧。
    kright
        5
    kright  
    OP
       27 天前
    @512357301 07-09 15:29:05 这个时间
    liuhai233
        6
    liuhai233  
       26 天前
    @kright
    ```
    >>> datetime.fromtimestamp(1752074788, tz=timezone.utc)
    datetime.datetime(2025, 7, 9, 15, 26, 28, tzinfo=datetime.timezone.utc)
    ```
    512357301
        7
    512357301  
       26 天前 via Android
    @kright #5 正好差 8 小时,那估计是苹果帮你提前计算好了,给的就是东八区的时间戳,转换的时候可以直接转,不用考虑加 8 小时。
    很多时候,要么是 bug ,要么就是特性,没那么多弯弯绕。
    kright
        8
    kright  
    OP
       26 天前
    @liuhai233
    所以你这是 0 时区的地方时间呀。。。
    kright
        9
    kright  
    OP
       26 天前
    @512357301 时间戳不区分时区的
    512357301
        10
    512357301  
       24 天前 via Android
    以下来自 grok ai 解答:
    链接: https://grok.com/share/c2hhcmQtMg%3D%3D_8de177f8-6602-4088-8894-d1f2b2d7cc45
    [收到苹果通知的时间是 2025-07-09 15:29:05 ,但苹果订阅通知字段 purchaseDate 的时间戳是 1752074788000 。
    转换了一下,发现是北京时间:2025-07-09 23:26:28 。
    这对于我收到通知的时间来说是一个来自未来的时间,是什么原因导致的?]

    如果这是订阅续订( renewal ),purchaseDate 可能反映了订阅的下一周期生效时间。例如,苹果可能在 15:29:05 发送通知,告知即将续订,而 purchaseDate 记录的是续订实际生效的时间( 23:26:28 )。

    如何验证原因?
    检查通知类型:查看通知的详细内容(例如,是 INITIAL_BUY 、RENEWAL 、CANCELLATION 等)。如果是续订通知,purchaseDate 可能表示新订阅周期的开始时间。
    检查订阅状态:登录苹果开发者后台或查看 App Store Connect 中的订阅记录,确认 purchaseDate 是否与订阅的生效时间一致。
    联系苹果支持:如果时间差异常且无法解释,可以联系苹果开发者支持,提供通知详情和时间戳,询问具体原因。
    查看交易日志:如果你的应用有服务器验证订阅的机制,检查服务器日志中与该交易相关的其他时间戳(例如 originalPurchaseDate 或 expiresDate ),以了解交易流程。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5767 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 01:42 · PVG 09:42 · LAX 18:42 · JFK 21:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.