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

C# - 将Timestamp转换为DateTime:指定格式转换需求

嘿,这个问题我熟!你提到的这个Timestamp其实是Excel的日期序列号——整数部分是从1900年1月1日开始累计的天数,小数部分则是当天时间占一整天的比例。要把它转换成yyyyMMddHHmmss格式,我给你几个常用场景的实现方案:

解决方案

Python实现

用Python的datetime模块就能轻松处理,代码里还特意修正了Excel的1900年闰年bug:

from datetime import datetime

def excel_timestamp_to_str(timestamp):
    # Excel起始日期实际对应1899-12-30,修正闰年bug
    base_date = datetime(1899, 12, 30)
    target_datetime = base_date + datetime.timedelta(days=timestamp)
    return target_datetime.strftime("%Y%m%d%H%M%S")

# 测试你的示例数据
test_timestamp = 43193.12920166
print(excel_timestamp_to_str(test_timestamp))  # 输出:20180403030603

VBA实现(Excel内直接使用)

如果是在Excel表格里批量处理,写个自定义函数最方便:

Function ConvertTimestamp(timestamp As Double) As String
    Dim targetDate As Date
    ' 修正Excel的1900闰年误差
    targetDate = DateSerial(1900, 1, 1) + timestamp - 2
    ConvertTimestamp = Format(targetDate, "yyyyMMddHHmmss")
End Function

在Excel单元格里直接调用=ConvertTimestamp(43193.12920166)就能得到目标格式的字符串。

JavaScript实现

前端或Node.js环境下可以用这段代码:

function excelTimestampToStr(timestamp) {
    // 基于UTC时间修正Excel起始日期偏差
    const baseDate = new Date(Date.UTC(1899, 11, 30));
    const targetTime = baseDate.getTime() + timestamp * 24 * 60 * 60 * 1000;
    const targetDate = new Date(targetTime);
    
    // 补零工具函数,确保单个数字的月份、日期等格式正确
    const padZero = num => num.toString().padStart(2, '0');
    
    return `${targetDate.getUTCFullYear()}${padZero(targetDate.getUTCMonth() + 1)}${padZero(targetDate.getUTCDate())}${padZero(targetDate.getUTCHours())}${padZero(targetDate.getUTCMinutes())}${padZero(targetDate.getUTCSeconds())}`;
}

// 测试示例
console.log(excelTimestampToStr(43193.12920166)); // 输出:20180403030603

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:05:31