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

如何在ASP.NET中将JavaScript日期传递给datetime类型输入框

ASP.NET中用JavaScript给datetime输入框赋值的正确方式

首先要明确:ASP.NET通过asp-for="EndingDate"生成的<input>,如果绑定的是.NET的DateTime类型,实际渲染后通常是type="datetime-local"(原生datetime类型已被浏览器废弃),这类输入框要求的日期格式是不带时区的YYYY-MM-DDTHH:mm格式。

你之前的代码问题在于:d.toJSON()返回的是UTC时区的ISO字符串(比如"2015-03-24T16:00:00.000Z"),直接赋值会导致日期显示偏移(比如本地时区为东8区的话,2015-03-25会变成2015-03-24)。

以下是两种可靠的实现方式:

方式一:手动构造符合要求的格式字符串

直接提取日期的年、月、日、时、分,拼接成输入框需要的格式:

const d = new Date("2015-03-25");
// 补零确保两位数格式
const year = d.getFullYear();
const month = String(d.getMonth() + 1).padStart(2, '0'); // 月份从0开始,需+1
const day = String(d.getDate()).padStart(2, '0');
const hours = String(d.getHours()).padStart(2, '0');
const minutes = String(d.getMinutes()).padStart(2, '0');

const formattedDate = `${year}-${month}-${day}T${hours}:${minutes}`;
$('#enddate').val(formattedDate);

方式二:基于ISO字符串调整时区后截取

通过调整时区偏移量,将UTC时间转为本地时间的ISO字符串,再截取到分钟位:

const d = new Date("2015-03-25");
// 计算本地时区与UTC的偏移毫秒数
const offsetMs = d.getTimezoneOffset() * 60000;
// 转换为本地时间的Date对象
const localDate = new Date(d.getTime() - offsetMs);
// 截取到分钟位(去掉秒和时区信息)
const formattedDate = localDate.toISOString().slice(0, 16);

$('#enddate').val(formattedDate);

这两种方式都能确保输入框接收到正确格式的本地日期,避免时区偏移导致的显示错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 22:15:38