如何在查看asp.net核心中将日期时间csharp转换为javascript日期?

问题描述

我有一个日期时间字段,用于保存考试的结束日期时间。它来自数据库。 我想用这个字段创建倒数计时器。我有倒数计时器代码,但我不知道如何使用结束日期时间。 这是javascript代码

 var countDownDate = new Date(Date.parse(endTime));

    var x = setInterval(function () {

        // Get today's date and time
        var Now = new Date().getTime();

        // Find the distance between Now and the count down date
        var distance = countDownDate - Now;

        // Time calculations for days,hours,minutes and seconds
        var days = Math.floor(distance / (1000 * 60 * 60 * 24));
        var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
        var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
        var seconds = Math.floor((distance % (1000 * 60)) / 1000);

        // display the result in the element with id="demo"
        document.getElementById("demo").innerHTML = days + "d " + hours + "h "
            + minutes + "m " + seconds + "s ";

        // If the count down is finished,write some text
        if (distance < 0) {
            clearInterval(x);
            document.getElementById("demo").innerHTML = "EXPIRED";
        }
    },1000);

我认为这是结束时间:

@{
ViewData["Title"] = "ShowQuestions";
Layout = "~/Views/Shared/_Layout.cshtml";
DateTime start = ViewBag.StartTime;
DateTime endTime = ViewBag.EndTime;
 }

当我运行这个时,它什么也没显示。我应该写什么:

var countDownDate=...

解决方法

不要在前端应用中发送c#数据时间响应,发送日期时间字符串格式yyyy-mm-dd格式响应

,

尝试添加 @ 字符,如下所示: var countDownDate = new Date(Date.parse(@endTime)) 要么 var countDownDate = new Date(Date.parse('@Html.Raw(endTime)'))

,

如果您只是在 C# 方面转换为 JavaScript 日期可能会更容易。

JavaScript 日期是一个数字,表示自 1970 年 1 月 1 日 UTC 以来的毫秒数。这类似于 Unix 纪元时间,只是 Unix 纪元以秒而不是毫秒表示。现在,您使用的 DateTime 类指的是机器时间(或本地时间,具体取决于机器的配置方式)。除非考虑时区,否则无法直接转换为 JavaScript 时间。

DateTimeOffset 类会为您处理所有这些。该类包含本地时间和 UTC 时间的偏移量。它有一个方法来获取它的值并将其作为与 JavaScript Date 对象兼容的 long 返回。但这并不直接对您有用,因为您从数据库接收 DateTime。 (我将忽略在数据库中存储 DateTime 而不是 DateTimeOffset 是不好的形式这一事实。:-))

幸运的是,您可以将 DateTime 转换为 DateTimeOffset。 Convert from DateTime to DateTImeOffset

下面的代码说明了获取当前时间的 DateTimeOffset 并将其打印为 JavaScript 日期兼容数字。它还向您展示了将 DateTime 结构转换为 DateTimeOffset 结构是多么容易,假设您愿意简单地接受本地时区以创建与 UTC 的偏移量。就您而言,您只需要一个倒数计时器,这样就可以了。

class Program
{
    static void Main(string[] args)
    {
        
        var dateTimeOffset = DateTimeOffset.Now;
        Console.WriteLine($"Current time expressed as a JavaScript Date is {dateTimeOffset.ToUnixTimeMilliseconds()}");

        var now = DateTime.Now;
        DateTimeOffset nowDateTimeOffset = now;
        Console.WriteLine($"Current time expressed as a JavaScript Date after conversion is  {nowDateTimeOffset.ToUnixTimeMilliseconds()}");
    }
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...