ASP.net Core 6 - 如何将序列化日期转换为 DateTime?

发布于 2025-01-21 02:21:16 字数 1111 浏览 0 评论 0原文

在我的控制器中,我有一个httpget,需要两个日期的输入(理想情况下,没有时间,但应使用任何一种方式)。

 // GET: api/Shippingschedules/shipname
        [HttpGet("{startdate},{enddate}")]
        public async Task<ActionResult<Shippingschedule>> GetShippingSchedulesByDates(string startdate, string enddate)
        {
            CultureInfo ukCulture = new CultureInfo("en-GB");
            DateTime sDate = DateTime.Parse(startdate, ukCulture.DateTimeFormat);
            DateTime eDate = DateTime.Parse(enddate, ukCulture.DateTimeFormat);

            ActionResult<Shippingschedule> Shippingschedule = await _context.Shippingschedules.Where(
                x => x.StartDate >= sDate && x.EndDate <= eDate).FirstOrDefaultAsync();

            if (Shippingschedule == null)
            {
                return NotFound();
            }

            return Shippingschedule;
        }

当我调试sdate行时,该程序停止了错误:

字符串'1%2F1%2F2022'未被认为是有效的日期时间。在 system.datetime.parse(字符串S,IformatProvider提供商)

如何将其归为真实dateTime对象?

谢谢

In my controller I have a httpget that requires the input of two dates (ideally without time, but should work either way).

 // GET: api/Shippingschedules/shipname
        [HttpGet("{startdate},{enddate}")]
        public async Task<ActionResult<Shippingschedule>> GetShippingSchedulesByDates(string startdate, string enddate)
        {
            CultureInfo ukCulture = new CultureInfo("en-GB");
            DateTime sDate = DateTime.Parse(startdate, ukCulture.DateTimeFormat);
            DateTime eDate = DateTime.Parse(enddate, ukCulture.DateTimeFormat);

            ActionResult<Shippingschedule> Shippingschedule = await _context.Shippingschedules.Where(
                x => x.StartDate >= sDate && x.EndDate <= eDate).FirstOrDefaultAsync();

            if (Shippingschedule == null)
            {
                return NotFound();
            }

            return Shippingschedule;
        }

When I debug into the sDate line, the program stops with error:

String '1%2F1%2F2022' was not recognized as a valid DateTime. at
System.DateTime.Parse(String s, IFormatProvider provider)

How do I deserialise this into a real datetime object?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

凡间太子 2025-01-28 02:21:16

尝试一下

using System.Net;

 var startdateDecoded= WebUtility.UrlDecode(startdate);
var enddateDecoded= WebUtility.UrlDecode(enddate);

CultureInfo ukCulture = new CultureInfo("en-GB");
 DateTime sDate = DateTime.Parse(startdateDecoded, ukCulture.DateTimeFormat);

.....

try this

using System.Net;

 var startdateDecoded= WebUtility.UrlDecode(startdate);
var enddateDecoded= WebUtility.UrlDecode(enddate);

CultureInfo ukCulture = new CultureInfo("en-GB");
 DateTime sDate = DateTime.Parse(startdateDecoded, ukCulture.DateTimeFormat);

.....

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文