在 asp.net mvc razor 应用程序中将 Datetime C# 类型转换为 Date javascript

Posted

技术标签:

【中文标题】在 asp.net mvc razor 应用程序中将 Datetime C# 类型转换为 Date javascript【英文标题】:Converting Datetime C# type to Date javascript in asp.net mvc razor application 【发布时间】:2013-07-14 11:16:34 【问题描述】:

我在 javascript 中转换日期时遇到问题。我试试这个 sn-p:

$(document).ready(function () 
            var date = new Date();
            var d = date.getDate();
            var m = date.getMonth();
            var y = date.getFullYear();

            $('#calendar').fullCalendar(
                theme: true,
                header: left: 'prev,next today',center: 'title',right: 'month,agendaWeek,agendaDay',
                editable: true,
                events: [
                            
                    title: 'Birthday Party',
                    start: new Date(y, m, d+1, 19, 0),
                    end: new Date(y, m, d+1, 22, 30),
                    allDay: false
                    
                        ]

                );
            );

它可以工作,但是如果我将其更改为:

 $(document).ready(function () 
            var date = new Date();
            var d = date.getDate();
            var m = date.getMonth();
            var y = date.getFullYear();

            $('#calendar').fullCalendar(
                theme: true,
                header: left: 'prev,next today',center: 'title',right: 'month,agendaWeek,agendaDay',
                editable: true,
                events: [
                         @foreach (var m in Model.Get_List_Tache())
                          
                        @: title: "Tache_description", start: new Date(@m.Begin_date.Year +"," + @m.Begin_date.Month +","+ @m.Begin_date.Day ) , end: new Date( @m.End_date.Year +"," +@m.End_date.Month +"," + @m.End_date.Day ) 
                          
                        ]

                );
            );

日期格式存在语法错误。

那么这个错误的原因是什么?我该如何解决?

【问题讨论】:

尝试用, 替换那些"," 我没有在那里进行字符串连接。 Accessing C# variable from Javascript in asp.net mvc application 的可能重复项 你为什么使用foreach?如果您尝试设置这些属性两次,我认为它不会喜欢它。 做一个“查看源代码”。我怀疑你的循环输出了无效的 JavaScript。 【参考方案1】:

你可以使用这个解决方案

start: new Date(@m.Begin_date.ToString("yyyy,MM-1,dd"))

【讨论】:

var date = new Date(@DateTime.ToString("yyyy,MM-1,dd,HH,mm,ss"))【参考方案2】:

我仍在 FosterZ,但你也应该摆脱 +

所以不是

start: new Date(@m.Begin_date.Year +"," + @m.Begin_date.Month +","+ @m.Begin_date.Day ) ,

试试

start: new Date(@m.Begin_date.Year , @m.Begin_date.Month , @m.Begin_date.Day ) ,

如果这仍然不起作用,请查看页面的源代码,并查看那里的 Javascript 中添加了什么。它很可能不是你所期望的。如果您无法弄清楚,请将其添加到您的问题中,我们可以查看一下。

【讨论】:

几乎!请记住将月份设为 -1,因为 JavaScript 中的月份从 0 开始,而不是像 C# DateTime 那样从 1 开始【参考方案3】:

你可以使用 c# 的 DateTime.ToLongDateString() 并将它传递给 javascript 中 Date 对象的构造函数,只要你希望日期保持不变。

 start: new Date(@m.Begin_date.ToLongDateString());

【讨论】:

以上是关于在 asp.net mvc razor 应用程序中将 Datetime C# 类型转换为 Date javascript的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC Razor

将 ASP.NET Razor 网站(例如 MiniBlog)集成为 ASP.NET MVC Web 应用程序的模块?

在 ASP.NET MVC 5 中从数据库加载 Razor 视图

htmlhelper 不包含 ASP.NET MVC RAZOR 中的剑道定义

使用 ASP.NET 核心 MVC/Razor 站点和 WebAPI 进行授权

ASP.NET MVC 3、Razor 视图和可移植区域