jquery new Date()在本地工作但不在线

时间:2017-08-31 18:30:01

标签: c# jquery asp.net-mvc datetime

MVC项目,在我的剃刀视图中,在本地运行,这有效:

<script>
        var userLeagueID = '@(ViewBag.userLeagueID)';
        var playerRank = '@(ViewBag.playerRank)';
        var currentTime = new Date('@(ViewBag.TimeTest)')
        //.toUTCString()
        ;
        //var currentTime = new Date();
        $(document).ready(function () {
            if (typeof currentTime !== 'undefined') {
                alert(currentTime);
            }
        });
    </script>

但是,当我发布网站时,它无法正常工作,警报状态&#34;无效日期&#34;。

我从服务器代码中获取@ ViewBag.TimeTest,如下所示:

ViewBag.TimeTest = vm.LastPickTime;

(vm.LastPickTime是一个c#DateTime字段。)。我打赌我需要一个在c#端运行的函数,但不确定哪一个,有这么多可供选择?我将尝试一系列不同的功能,看看我是否得到它。

请帮我省时间!

3 个答案:

答案 0 :(得分:3)

根据Mat J的评论,我在c#侧找到了我需要的方法/功能。

ViewBag.TimeTest = vm.LastPickTime.Value.ToSTring("o");

为我修好了!非常感谢Mat并感谢其他人提出的其他建议。

答案 1 :(得分:0)

我怀疑你的开发环境和prod环境有不同的CultureInfo导致DateTime.ToString()生成不同的结果,并且它似乎在prod上生成无效的日期格式。您可以通过检查脚本来测试它。

不是使用字符串日期实例化Date,而是使用毫秒:

ViewBag.TimeTest = vm.LastPickTime.UtcNow
    .Subtract(new DateTime(1970,1,1,0,0,0,DateTimeKind.Utc))
    .TotalMilliseconds;

删除单引号:

var currentTime = new Date(@(ViewBag.TimeTest));

答案 2 :(得分:0)

如何构建vm.LastPickTime

我创建了一个可以正常使用的方案:

public ActionResult Index()
{
    var test = new TestClass()
    {
        TimeTest = DateTime.Now
    };

    ViewBag.TimeTest = test.TimeTest;

    return View();
}

public class TestClass
{
    public DateTime TimeTest { get; set; }
}

然后在视图中......

<div class="jumbotron">
    <h1>Testing Time</h1>
    <button id="testButton">click Me</button>
</div>

@section scripts {
    <script>
        $(document).ready(function () { 
            var currentTime = new Date('@(ViewBag.TimeTest)');

            $("#testButton").click(function () {
                if (typeof currentTime !== 'undefined') {
                    alert(currentTime);
                }
            });
        });
    </script>
}