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

ASP.NET Core Razor Pages日期选择器的时间格式适配问题

问题描述

在ASP.NET Core Razor Pages应用中,我通过以下AJAX代码从服务器获取DateTime值并设置到<input />元素中:

$.ajax({
    type: 'GET',
    url: '?handler=InitProductTransfer',
    contentType: 'application/json',
    dataType: 'json',
    data: { 'sourceId': sourceId, 'sourceType': sourceType },
})
.done(function (response) {
    // Set timestamp
    var $timeStamp = $modal.find('#TimeStamp');
    $timeStamp.val(response.timeStamp);   // <====== ERROR HERE!
})
.fail(function (response) {
    alert(response.responseText);
});

当前遇到的问题是时间格式不正确,response.timeStamp的格式为2023-10-31T15:23:55.0038809,想知道JavaScript有没有内置函数可以将日期格式化为日期时间<input />元素所需的格式,还是必须手动转换为字符串?

解决方案

不需要手动拼接字符串,JavaScript可以通过Date对象结合原生方法快速处理:

  • 适配<input type="datetime-local" />的最简方案
    这类输入框要求格式为YYYY-MM-DDTHH:mm:ss,直接用Date对象的toISOString()方法,再截取到秒的部分即可:
const date = new Date(response.timeStamp);
// 截取到秒,得到符合要求的格式
const formattedDate = date.toISOString().slice(0, 19);
$timeStamp.val(formattedDate);
  • 自定义格式处理
    如果需要其他格式(比如YYYY-MM-DD HH:mm:ss),可以提取日期的各个部分拼接:
const date = new Date(response.timeStamp);
const year = date.getFullYear();
// 月份从0开始,要加1并补0
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
const hours = String(date.getHours()).padStart(2, '0');
const minutes = String(date.getMinutes()).padStart(2, '0');
const seconds = String(date.getSeconds()).padStart(2, '0');

const formattedDate = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
$timeStamp.val(formattedDate);
  • 后端提前格式化(可选)
    也可以在ASP.NET Core后端直接返回指定格式的字符串,避免前端处理:
// 示例:在返回的模型中指定日期格式
public class TransferResponse
{
    [JsonPropertyName("timeStamp")]
    public string TimeStamp => DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss");
}

// 或者全局配置JSON序列化格式
builder.Services.AddRazorPages()
    .AddJsonOptions(options =>
    {
        options.JsonSerializerOptions.Converters.Add(
            new JsonConverter<DateTime>(
                date => date.ToString("yyyy-MM-ddTHH:mm:ss"),
                str => DateTime.Parse(str)
            )
        );
    });

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 05:25:04