Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中解析JS Date.toIsoString#_C#_.net_Angular - Fatal编程技术网

C# 在C中解析JS Date.toIsoString#

C# 在C中解析JS Date.toIsoString#,c#,.net,angular,C#,.net,Angular,我需要将JS日期存储为ISO 8601日期。我目前从一个格式为2019-06-22T00:00:00.000Z的表单中获取日期,正如JS'toIsoString()方法所预期的那样 当这个日期被传递给我的API控制器时,我已经尝试在这个日期使用DateTime.ParseExact并将格式传递给该方法 我试过了 TS C# 及 哪个扔 System.FormatException: String '2019-06-22T00:00:00.000Z' was not recognized as a

我需要将JS日期存储为ISO 8601日期。我目前从一个格式为2019-06-22T00:00:00.000Z的表单中获取日期,正如JS'toIsoString()方法所预期的那样

当这个日期被传递给我的API控制器时,我已经尝试在这个日期使用DateTime.ParseExact并将格式传递给该方法

我试过了

TS

C#

哪个扔

System.FormatException: String '2019-06-22T00:00:00.000Z' was not recognized as a valid DateTime.
   at System.DateTime.ParseExact(String s, String format, IFormatProvider provider)
   at socialmediabackendv2.Repositories.UserRepository.<>c__DisplayClass8_1.<AddShowsToArtistInDb>b__3(MappedArtistShow x) in C:\Users\freem\Documents\Projects\socialmediabackendv2\socialmediabackendv2\Repositories\UserRepository.cs:line 256
   at System.Collections.Generic.List`1.ForEach(Action`1 action)
   at socialmediabackendv2.Repositories.UserRepository.AddShowsToArtistInDb(List`1 shows, Guid id) in C:\Users\freem\Documents\Projects\socialmediabackendv2\socialmediabackendv2\Repositories\UserRepository.cs:line 254
   at socialmediabackendv2.Services.UserService.AddNewShowToArtist(StringValues jwtToken, List`1 shows) in C:\Users\freem\Documents\Projects\socialmediabackendv2\socialmediabackendv2\Services\UserService.cs:line 231
   at socialmediabackendv2.Controllers.UsersController.AddNewShow(List`1 newShows) in C:\Users\freem\Documents\Projects\socialmediabackendv2\socialmediabackendv2\Controllers\UsersController.cs:line 41
   at lambda_method(Closure , Object , Object[] )
   at Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute(Object target, Object[] parameters)
   at Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor.SyncActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()
   at Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

System.FormatException:字符串“2019-06-22T00:00:00.000Z”未被识别为有效的日期时间。
在System.DateTime.ParseExact(字符串s、字符串格式、IFormatProvider)
在socialmediabackendv2.Repositories.UserRepository.c_uu中,以c:\Users\freem\Documents\Projects\socialmediabackendv2\socialmediabackendv2\Repositories\UserRepository.cs:第256行显示Class8_1.b_uu3(MappedaristShow x)
at System.Collections.Generic.List`1.ForEach(操作`1操作)
在C:\Users\freem\Documents\Projects\socialmediabackendv2\socialmediabackendv2\Repositories\UserRepository.AddShowsToArtistInDb(列表'1显示,Guid id)中的socialmediabackendv2.Repositories.AddShowsToArtistInDb中:第254行
在C:\Users\freem\Documents\Projects\socialmediabackendv2\socialmediabackendv2\Services\UserService.AddNewShowToArtist(StringValues jwtToken,列表`1显示)中的socialmediabackendv2.Services.UserService.AddNewShowToArtist中:第231行
在C:\Users\freem\Documents\Projects\socialmediabackendv2\socialmediabackendv2\Controllers\UsersController.AddNewShow中的socialmediabackendv2.Controllers.UsersController.AddNewShow(列出'1个新闻展示):第41行
在lambda_方法(闭包、对象、对象[])
位于Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute(对象目标,对象[]参数)
位于Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor.SyncActionResultExecutor.Execute(IActionResultTypeMapper映射器、ObjectMethodExecutor执行器、对象控制器、对象[]参数)
在Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync()中
在Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()上
位于Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext上下文)
位于Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(状态和下一步、范围和范围、对象和状态、布尔值和isCompleted)
在Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()中
在Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()上
位于Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext)
在Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State&Next、Scope&Scope、Object&State、Boolean&isCompleted)
在Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()中
在Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()上
在Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext HttpContext)中
位于Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext上下文)

我开始觉得这是toIsoString()的一个问题,但对于DateTimes,我是一个新手,不知道还能从哪里找到答案。还有其他人见过这个吗?日期与格式规则匹配,但似乎无法对其进行解析。

您可以使用
Convert.ToDateTime()
函数,该函数还接受字符串日期格式值,并将其转换为
C.

List objList=new List();
对象列表添加(“2019-06-22T00:00:00.000Z”);
objList.ForEach(x=>Console.WriteLine(Convert.ToDateTime(x));
将其放入
try catch
,以便在收到任何无效格式时可以处理异常,将其记录下来以增强调试

有关
Convert.ToDateTime()的详细信息

下面是如何将从客户端类型脚本接收的字符串值转换为DateTime对象的细节


它会引发什么异常/错误?或者ParseExact在C#中为ShowDate变量赋值了什么?我现在将更新这个问题,以便更清楚地知道在API中抛出了什么以及具体做了什么。我喜欢这个,它完全按照我想要的方式工作。我一直在努力让它工作,在6个月没碰它之后,你在一个小时内就解决了我的问题。非常感谢。很高兴减轻你的痛苦兄弟:P.:)
var user = _context.Users
                    .Where(x => x.Id == id)
                    .Include(y => y.Artist)
                    .Include(z => z.Artist.Shows)
                    .FirstOrDefault();

                if (user != null)
                {
                    shows.ForEach(x =>
                    {
                        user.Artist.Shows.Add(new ArtistShow
                        {
                            Venue = x.Venue,
                            ShowDate = DateTime.ParseExact(x.ShowDate.ToString(), "YYYY-MM-DDTHH:mm:ss.sssZ", CultureInfo.InvariantCulture),
                            BandsAlsoPlaying = x.BandsAlsoPlaying.Join(","),
                            Id = Guid.NewGuid()
                        });


                    });

                    _context.SaveChanges();

                    return new ShowAddedToArtistDbResponse
                    {
                        ShowAdded = true,
                        UserToken = _encryptionService.GenerateToken(id),
                        NumberOfShowsAdded = shows.Count
                    };   
                }
var user = _context.Users
                    .Where(x => x.Id == id)
                    .Include(y => y.Artist)
                    .Include(z => z.Artist.Shows)
                    .FirstOrDefault();

                if (user != null)
                {
                    shows.ForEach(x =>
                    {
                        user.Artist.Shows.Add(new ArtistShow
                        {
                            Venue = x.Venue,
                            ShowDate = ShowDate = DateTime.ParseExact(x.ShowDate, "YYYY-MM-DDTHH:mm:ss.sssZ", CultureInfo.InvariantCulture),
                            BandsAlsoPlaying = x.BandsAlsoPlaying.Join(","),
                            Id = Guid.NewGuid()
                        });


                    });

                    _context.SaveChanges();

                    return new ShowAddedToArtistDbResponse
                    {
                        ShowAdded = true,
                        UserToken = _encryptionService.GenerateToken(id),
                        NumberOfShowsAdded = shows.Count
                    };   
                }
System.FormatException: String '2019-06-22T00:00:00.000Z' was not recognized as a valid DateTime.
   at System.DateTime.ParseExact(String s, String format, IFormatProvider provider)
   at socialmediabackendv2.Repositories.UserRepository.<>c__DisplayClass8_1.<AddShowsToArtistInDb>b__3(MappedArtistShow x) in C:\Users\freem\Documents\Projects\socialmediabackendv2\socialmediabackendv2\Repositories\UserRepository.cs:line 256
   at System.Collections.Generic.List`1.ForEach(Action`1 action)
   at socialmediabackendv2.Repositories.UserRepository.AddShowsToArtistInDb(List`1 shows, Guid id) in C:\Users\freem\Documents\Projects\socialmediabackendv2\socialmediabackendv2\Repositories\UserRepository.cs:line 254
   at socialmediabackendv2.Services.UserService.AddNewShowToArtist(StringValues jwtToken, List`1 shows) in C:\Users\freem\Documents\Projects\socialmediabackendv2\socialmediabackendv2\Services\UserService.cs:line 231
   at socialmediabackendv2.Controllers.UsersController.AddNewShow(List`1 newShows) in C:\Users\freem\Documents\Projects\socialmediabackendv2\socialmediabackendv2\Controllers\UsersController.cs:line 41
   at lambda_method(Closure , Object , Object[] )
   at Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute(Object target, Object[] parameters)
   at Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor.SyncActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()
   at Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

List<string> objList = new List<string>();
objList.Add("2019-06-22T00:00:00.000Z");    
objList.ForEach(x=> Console.WriteLine( Convert.ToDateTime(x) ));