为了账号安全,请及时绑定邮箱和手机立即绑定

使用 MomentJS 从 JavaScript 发布到 C# 时的日期解析问题

使用 MomentJS 从 JavaScript 发布到 C# 时的日期解析问题

C#
BIG阳 2021-08-07 15:21:40
我在 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.如果日期有任何给定月份的 BEFORE 或 ON 12 日(例如 12/06/2018),那么它在 C# 方面将是正确的 6/12/2018 12:00:00 AM这是我在 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# 能够根据区域识别格式并正确解析它?(我可以看到,当给出澳大利亚格式时,它正试图将其解析为美国格式)
查看完整描述

1 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

ISO 8601格式发送您的日期。

使用 JavascriptDate对象,您有:

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

或使用时刻:

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


查看完整回答
反对 回复 2021-08-07
  • 1 回答
  • 0 关注
  • 212 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信