如何从前端(Angular)向C#.net日期时间(webAPI)发送日期

本文关键字:日期 时间 webAPI net 前端 Angular | 更新日期: 2023-09-27 18:25:33

在我的前端,我有一个HTML输入框,用户可以在其中输入日期。这将数据添加到我的AngularJS模态中,然后当用户单击保存时,我尝试将其作为JSON对象发送到服务器。

在服务器上,我使用了这个,我认为它修改了预期日期的方式。我所知道的是,它允许AngularJS很好地读取来自后端的日期。

     config.SuppressDefaultHostAuthentication();
        config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
        config.Formatters.Remove(config.Formatters.XmlFormatter);
        var json = config.Formatters.JsonFormatter;
        json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
        json.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
        json.SerializerSettings.Converters.Add(new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-ddTHH:mmZ" });

有人知道我如何将输入框中的日期以YYYY-MM-DD、modify in some way等格式输入,然后将其传递给服务器,让服务器将其读取为日期时间吗?

我遇到的问题是,我不确定如何修改YYYY-MM-DD日期。当我尝试输入像"2011-12-31"这样的日期时,服务器不会接受它,并且应该输入的列显示日期的空值。

如何从前端(Angular)向C#.net日期时间(webAPI)发送日期

您是否尝试过创建IsoDateTimeConverter的子类?试试这个:

public class MyJsonDateTimeConverter : IsoDateTimeConverter
{
    public MyJsonDateTimeConverter()
    {
        base.DateTimeFormat = "yyyy-MM-dd";
    }
}

然后用它代替最后一行:

json.SerializerSettings.Converters.Add(new MyJsonDateTimeConverter());

希望这有帮助:)

有人知道我如何将输入框中的日期以YYYY-MM-DD等格式输入,以某种方式进行修改,然后将其传递给服务器,让服务器将其读取为日期时间吗?

为什么不使用angular ui团队的日期选择器组件呢。

我遇到的问题是,我不确定如何修改YYYY-MM-DD日期。当我尝试输入像"2011-12-31"这样的日期时,服务器不会接受它,并且应该输入的列显示日期的空值。

YYYY-MM-DD是您服务器端接受的日期格式吗?然后,您可以将客户端上现有的日期格式转换为此格式,然后再将其发布到服务器。查看您的网络选项卡以查看发布的价值。

希望这能有所帮助。

如果您知道格式,请尝试使用DateTime.ParseExact,或者只使用DateTime.如果您不知道格式,则进行分析:

DateTime dt = DateTime.ParseExact("2011/12/31", "yyyy/d/MM", new CultureInfo("en-US"));

DateTime.Parse("2011/12/31", new CultureInfo("en-US"));

但是,如果来自UI的日期格式为YYYY-MM-DD,则尝试以下操作:

DateTime dt;
DateTime.TryParseExact(dateTime, 
                       "yyyy-MM-dd hh:mm tt", 
                       CultureInfo.InvariantCulture, 
                       DateTimeStyles.None, 
                       out dt);