如何将ticks转换为momentjs对象

时间:2016-04-11 17:42:58

标签: javascript c# .net momentjs nodatime

我使用nodatime并返回刻度。如何使用momentjs转换刻度线以使用和格式化?

public JsonResult Foo()
{
  var now = SystemClock.Instance.Now.Ticks;
  return Json(now, JsonRequestBehavior.AllowGet);
}

它会返回long,例如14598788048897648

3 个答案:

答案 0 :(得分:3)

Moment.js没有直接接受刻度的构造函数,但它确实有one that accepts the number of milliseconds that have elapsed since the epoch,这可能适用于此:

// Dividing your ticks by 10000 will yield the number of milliseconds
// as there are 10000 ticks in a millisecond
var now = moment(ticks / 10000);

This GitHub discussion in the NodaTime repository讨论了使用扩展方法来支持此行为以及从服务器端代码返回毫秒数:

public static long ToUnixTimeMilliseconds(this Instant instant)
{
    return instant.Ticks / NodaConstants.TicksPerMillisecond;
}

答案 1 :(得分:3)

不要泄漏Ticks您的API。相反,使用NodaTime.Serialization.JsonNet包允许像Instant这样的NodaTime类型以ISO8601标准格式序列化。该格式在moment.js中原生支持。

请参阅页面底部的the user guide page on serialization

答案 2 :(得分:0)

根据the documentation,Instant.Ticks属性为:

  

Unix时代以来的滴答数。

  

刻度等于100纳秒。一毫秒内有10,000个滴答。

Date对象在其构造函数中占用自Unix纪元以来的毫秒数,并且由于时刻使用封面下的Date构造函数,您可以使用:

var value = moment(ticks/10000);