簡體   English   中英

如何在javaScript中獲取日期標記?

[英]How to get date ticks in a javaScript?

我在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;
}

對於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;

對於“01.03.2018”,它返回1517184000000

要么

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

var difrent = ticks2 - ticks1;

我在js代碼中做錯了什么?
我想在js中獲得相同的值

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

  • C#:單個刻度表示一百納秒或一千萬分之一秒。 一毫秒內有10,000個刻度,或者一秒鍾內有1000萬個刻度。

= ( / 10000) and your code looks OK. 所以, = ( / 10000) ,你的代碼看起來還不錯。 您只需要考慮您選擇的任何代碼(C#或JavaScript)的差異。

如果你在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);

如果你使用StringDateToDecimal("23 december 2018");這兩個答案都是15455232000000000 StringDateToDecimal("23 december 2018"); 在你的C#代碼中。

我希望我能得到你所要問的問題。

JavaScript Date類型的起源是從1970年1月1日午夜開始的Unix紀元。

.NET DateTime類型的來源是0001年1月1日午夜。

對於ticks,來自DateTime.Ticks文檔:

單個刻度表示一百納秒或一千萬分之一秒。 一毫秒內有10,000個刻度,或者一秒鍾內有1000萬個刻度。

因此,考慮到所有這些,您的代碼可以簡化為:

var d = new Date(2018, 3, 1); // Your date
var dStart = new Date(1970, 1, 1);
var dateDifference = ((d.getTime() - dStart.getTime()) * 10000);
console.log(dateDifference); // 15198588000000000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM