以1900-01-01为起始的儒略日(Julian Day)转标准日期时间求助
儒略日(自定义纪元)转标准日期时间方案
核心逻辑
你提到的「儒略日」实际是相对于1900-01-01 00:00:00基准时间的小时偏移量,转换核心为:基准时间 + 偏移小时数,最终格式化输出为%Y-%m-%d %H:%M:%S格式即可。
注意:如果转换结果和预期存在整小时差值,可检查数据源的时区配置,调整基准时间的时区参数即可修正。
多场景实现代码
Python 实现
单值转换
from datetime import datetime, timedelta base_time = datetime(1900, 1, 1, 0, 0, 0) offset_hour = 964249 target_time = base_time + timedelta(hours=offset_hour) # 输出格式化字符串 print(target_time.strftime("%Y-%m-%d %H:%M:%S"))
批量处理TXT数据集
import pandas as pd # 读取Panoply导出的TXT文件,可根据实际分隔符调整sep参数 df = pd.read_csv("导出的文件路径.txt", sep="\t") # 假设存储偏移量的列名为julian_date df["standard_time"] = pd.to_datetime(df["julian_date"], unit="h", origin="1900-01-01 00:00:00") # 生成指定格式的字符串列 df["standard_time_str"] = df["standard_time"].dt.strftime("%Y-%m-%d %H:%M:%S")
Excel/WPS 实现
假设偏移量存储在A1单元格,输入公式即可完成转换:
=TEXT(DATE(1900,1,1)+A1/24,"yyyy-mm-dd hh:mm:ss")
注意:部分旧版本Excel存在1900年闰年计算bug,如果输出结果比预期多1天,可将公式调整为=TEXT(DATE(1900,1,1)+A1/24-1,"yyyy-mm-dd hh:mm:ss")
R 实现
单值转换
base_time <- as.POSIXct("1900-01-01 00:00:00", tz = "UTC") offset_hour <- 964249 target_time <- base_time + offset_hour * 3600 # 输出格式化字符串 format(target_time, "%Y-%m-%d %H:%M:%S")
批量处理TXT数据集
library(readr) library(dplyr) df <- read_delim("导出的文件路径.txt", delim = "\t") df <- df %>% mutate( standard_time = as.POSIXct("1900-01-01 00:00:00", tz = "UTC") + julian_date * 3600, standard_time_str = format(standard_time, "%Y-%m-%d %H:%M:%S") )
内容的提问来源于stack exchange,提问作者Gzm_93
相关产品推荐
相关产品推荐

