C#后端与JavaScript前端统一时间格式化的方法

温以宁
温以宁
发布时间:2026-10-14 | 5人浏览过
原创

在Web开发中,前后端时间显示的格式一致性往往被忽视。本文演示如何通过 C# 服务端代码与 JavaScript 前端脚本,共同将 DateTime 转换为易读的 "dd-MMM-yyyy"(如 29-Aug-2013)格式。

目标结果

将日期对象格式化为固定风格:日-缩写月-年,例如 29-Aug-2013。

准备条件

  • C# 环境(.NET Framework 或 .NET Core/5+)。
  • JavaScript 运行环境(浏览器或 Node.js)。

真实操作顺序

第1步:C# 后台统一输出格式

目的是利用文化不变性(InvariantCulture)确保月份缩写在全球化环境下始终为英文标准缩写,避免服务器区域设置不同导致的差异。

入口:后端 DTO 序列化前或视图模型赋值处。
动作:调用 DateTime.ToString 并指定 DateTimeFormatInfo.InvariantInfo。

// C# 示例
string formattedDate = dateValue.ToString("dd-MMM-yyyy", System.Globalization.DateTimeFormatInfo.InvariantInfo);
// 结果示例: 29-Aug-2013

重要参数: - format: "dd-MMM-yyyy"(两位天数,三位英文月缩写,四位年份)。 - culture: System.Globalization.DateTimeFormatInfo.InvariantInfo。

完成状态:后端输出字符串符合预期,不依赖服务器本地语言包。

第2步:JavaScript 前端扩展 Date 原型

目的是当接收到 ISO 字符串或特定 JSON 日期格式时,在前端动态解析并转为相同视觉格式。

入口:项目公共工具库(utils.js)或全局脚本。
动作:定义月份映射数组,并向 Date.prototype 添加 format 方法。

// JS 示例
const monName = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun",
                  "Jul", "Aug", "Sept", "Oct", "Nov", "Dec" ];

Date.prototype.format = function (format) {
    if (!format) format = "yyyy-MM-dd hh:mm:ss";

    if (/(y+)/.test(format)) {
        format = format.replace(RegExp.$1, 
            (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    }
    if (/(M+)/.test(format)) {
        format = format.replace(RegExp.$1, 
            (monName[this.getMonth()] + "").substr(3 - RegExp.$1.length));
    }
    if (/(d+)/.test(format)) {
        format = format.replace(RegExp.$1, 
            ("00" + this.getDate()).substr(("" + this.getDate()).length));
    }
    return format;
};

完成状态:所有 Date 对象实例获得 .format() 能力。

第3步:前端解析并应用格式

目的是处理常见的 Ajax 返回的 JSON 日期字符串(如 /Date(timestamp)/),并将其转换为统一格式。

入口:数据渲染函数或 API 响应拦截器。
动作:提取毫秒时间戳,实例化 Date,并调用上述格式的 format 方法。

function formatJsonDate(str) {
    if (str && str !== '') {
        // 假设输入为 /Date(1234567890)/ 格式
        const timestamp = parseInt(str.substring(str.indexOf('(') + 1, str.indexOf(')')));
        return new Date(timestamp).format("dd-MMM-yyyy");
    }
    return '';
}

完成状态:前端页面上显示的文字与后端生成的文本一致。

完成判断

检查页面展示的日期是否为 dd-MMM-yyyy 样式(如 10-Oct-2023),且月份缩写无误(无本地化干扰)。

简要总结

通过 C# 的 InvariantInfo 和 JS 的原型扩展,可以低成本地解决前后端时间格式不一致的问题。该方法简单直接,适合中小型项目中对日期展示有统一规范要求的情况。以上就是C#与JavaScript时间格式化处理方法的详细内容,更多关于C#时间处理与JS日期转换的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表