如何在javaScript中获取日期标记?

时间:2018-03-01 16:20:40

标签: 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;
}

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

中获得相同的值

2 个答案:

答案 0 :(得分:2)

  • JavaScript: try { Bitmap bitmap = Bitmap.createBitmap(graphView.getWidth(), graphView.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap) { @Override public boolean isHardwareAccelerated() { return true; } }; graphView.draw(canvas); RepresentationHelper.addBitmap(string, bitmap); if (firstRequest) { adapter.notifyDataSetChanged(); firstRequest = false; } } catch (Exception e) { e.printStackTrace(); } :一个数字,表示自1970年1月1日午夜以来的毫秒数。

  • C#:单个刻度表示一百纳秒或一千万分之一秒。一毫秒内有10,000个刻度,或者一秒钟内有1000万个刻度。

所以,Date.getTime()和您的代码看起来不错。您只需要考虑您选择的任何代码(C#或JavaScript)的差异。

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

JavaScript ticks = (C# ticks / 10000)

如果您在C#代码中使用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); ,则两个答案都会转到15455232000000000。

我希望我能得到你所要求的问题。

答案 1 :(得分:1)

JavaScript Date类型的起源是从1970年1月1日午夜开始的Unix纪元。

.NET DateTime类型的来源是0001年1月1日午夜。

对于刻度,来自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