如何在javaScript中获取日期刻度?

Gro*_*nis 10 javascript c# date

我在 C# 中有这样的代码:

public static decimal StringDateToDecimal(this string stringDate)
{
    var cultureInfo = new CultureInfo("ru-Ru");
    var date = DateTime.Parse(stringDate, cultureInfo);
    var number = date.ToBinary();

    var unix = new DateTime(1970, 1, 1);
    var diff = (date - unix).Ticks;
    return (decimal)diff;
}
Run Code Online (Sandbox Code Playgroud)

对于 2018 年 3 月 1 日,它返回 15198624000000000。
但是 js 中的代码:

var from = $input.split(".");
var d = new Date(from[2], from[1] - 1, from[0]);
var dStart = new Date(1970, 1, 1);
var seconds = d.getTime();
var secondsStart = dStart.getTime();
var dateDifference = seconds - secondsStart;
Run Code Online (Sandbox Code Playgroud)

对于“01.03.2018”,它返回 1517184000000

或者

var ticks2 = ((d.getTime() * 10000) + 621355968000000000);
var ticks1 = ((dStart.getTime() * 10000) + 621355968000000000);

var difrent = ticks2 - ticks1;
Run Code Online (Sandbox Code Playgroud)

我在 js 代码中做错了什么?
我想在js中获得相同的值

Ric*_*ckL 9

  • JavaScript:: Date.getTime()一个数字,表示自 1970 年 1 月 1 日午夜以来的毫秒数。

  • C#:一个滴答声代表一百纳秒或百万分之一秒。一毫秒有 10,000 个滴答声,或一秒钟内有 1000 万个滴答声。

所以,你的代码看起来不错。您只需要考虑您选择的任何代码(C# 或 JavaScript)的差异。JavaScript ticks = (C# ticks / 10000)

如果您在 JavaScript 中使用明确的日-月日期)(例如 2018 年 12 月 23 日)

var $input = "23.12.2018";
var from = $input.split(".");

var dNew = new Date(from[2], from[1]-1, from[0]);
//Note dStart has 0 as month because JavaScript dates start at 0 and end with 11
var dStart = new Date(1970, 0, 1);
var seconds = dNew.getTime();
var secondsStart = dStart.getTime();
var dateDifference = seconds - secondsStart;
// multiply by 10000 to reconcile to c#
console.log("===> " + dateDifference * 10000);
Run Code Online (Sandbox Code Playgroud)

如果您StringDateToDecimal("23 december 2018");在 C# 代码中使用,这两个答案都为 15455232000000000 。

我希望我能理解你所问的问题。