gpt4 book ai didi

javascript - 使用 MomentJS 从 JavaScript 发布到 C# 时出现日期解析问题

转载 作者:行者123 更新时间:2023-12-03 01:41:51 24 4
gpt4 key购买 nike

我在 JS 和 C# (asp.net core 2.1) 中的日期方面遇到了一个奇怪的问题。我在前端添加日期并尝试使用以下 JavaScript 将它们发布回服务器:

$("#editOperation").on("submit",
function(e) {
e.preventDefault();
var form = $(this);
var url = form.attr("action");

// change date to YYYY-MM-DD format
for (let i = 0; i < form[0].length; i++) {
if (form[0][i].className.includes("hdn-exclude-")) {
if (form[0][i].value) {
var date = moment(form[0][i].value);
form[0][i].value = date.format('YYYY-MM-DD');
}
}
}

var formData = new FormData(form.get(0));
$.ajax({
url: url,
data: formData,
type: "post",
contentType: false,
processData: false,
success: function (response) {
if (response.result) {
toastr.success("Success!");
setTimeout(function () {
window.location = $("#cancelEditOperation").attr("href");
},
1000);
} else {
toastr.error(response.errorMessage);
}
}
});
});

然而,我遇到的问题是,当日期超过任何给定月份的 12 号时(例如 13/07/2018 - 澳大利亚格式),那么 C# 似乎不会能够解析它并为其指定默认值 1/01/0001 12:00:00 AM

如果日期在任何给定月份的 12 号之前或之后(例如 12/06/2018),则在 C# 端它将正确为 6/12/2018 12:00:00上午

这是我的 C# 模型:

public class GetOperationExcludeDate
{
public DateTime StartDate { get; set; }

public DateTime EndDate { get; set; }
}

我的行动:

[HttpPost("EditOperation/{id}")]
[AutoValidateAntiforgeryToken]
public async Task<ApiBooleanResponse> EditOperation(string id, GetOperationExcludeDate model)
{
return await _transportCompanyService.EditServiceOperationAsync(id, model);
}

如何规范我的日期,以便 C# 能够根据区域识别格式并正确解析它? (我可以看到,当给定澳大利亚格式时,它试图将其解析为美国格式)

最佳答案

将您的日期发送到 ISO 8601格式。

使用 Javascript Date 对象,您可以:

var isoDate = myDate.toISOString(); // returns "2018-06-12T01:58:40.867Z"

或使用时刻:

var isoDate = momentDate.format(); // returns "2018-06-12T10:58:40+09:00"

关于javascript - 使用 MomentJS 从 JavaScript 发布到 C# 时出现日期解析问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50808136/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com