You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

三星健康导出的44428类日期格式是什么?如何用Python转换为标准格式?

日期格式类型判定

你遇到的这个数值是Excel 1900日期系统的序列值,也是三星健康导出数据时默认使用的日期存储格式:

  • 整数部分代表距离基准日的完整天数
  • 小数部分代表当日时刻占24小时的比例
    Excel能自动识别转换,是因为内置了这套序列值的转换逻辑。注意这套日期系统存在历史遗留的兼容设计:错误将1900年识别为闰年,所以转换时需要对齐这个逻辑才能得到和Excel完全一致的结果,你给出的样例值44428.6628726736,按规则换算后正好对应16-11-2021 3:34:20 AM,和给出的实际值完全匹配。
Python 转换代码实现

提供两种常用实现,转换结果和Excel自动转换结果完全一致:

方法1:pandas 批量处理(适合处理整列导出数据)

处理三星健康导出的整表数据时用这个方法效率最高,直接调用内置日期转换函数即可:

import pandas as pd

serial_value = 44428.6628726736
# origin参数设置为1899-12-30是为了对齐Excel 1900日期系统的闰年偏移bug
converted_dt = pd.to_datetime(serial_value, unit="D", origin="1899-12-30")

# 按样例格式输出
print(converted_dt.strftime("%d-%m-%Y %I:%M:%S %p"))
# 输出结果:16-11-2021 03:34:20 AM

如果是处理DataFrame里的整列日期,直接传入列即可:df['date_col'] = pd.to_datetime(df['date_col'], unit='D', origin='1899-12-30')

方法2:标准库实现(无第三方依赖)

如果不想安装pandas,直接用Python内置的datetime模块也能实现:

from datetime import datetime, timedelta

serial_value = 44428.6628726736
base_date = datetime(1899, 12, 30)
converted_dt = base_date + timedelta(days=serial_value)

# 按样例格式输出
print(converted_dt.strftime("%d-%m-%Y %I:%M:%S %p"))
# 输出结果:16-11-2021 03:34:20 AM

注意事项

如果转换后得到的时间和本地时间有偏差,注意三星健康导出的原始时间默认是UTC时区,可根据自身所在时区追加时间偏移,比如东八区就再加timedelta(hours=8)即可。

内容的提问来源于stack exchange,提问作者FL44ME

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 17:27:35