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

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

在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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。