我使用nodatime并返回刻度。如何使用momentjs转换刻度线以使用和格式化?
public JsonResult Foo()
{
var now = SystemClock.Instance.Now.Ticks;
return Json(now, JsonRequestBehavior.AllowGet);
}
它会返回long
,例如14598788048897648
。
答案 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);