【问题标题】:Moment.js - getting display format or the formatted value from objectMoment.js - 从对象获取显示格式或格式化值
【发布时间】:2018-06-26 10:38:34
【问题描述】:

我在一个项目中使用 Angular 和 Material2。

我有一个这样创建的时刻对象:

myDate = moment.utc(new Date()).format("YYYY-MM-DD HH:mm:ss");

然后这个对象作为参数传递给另一个需要知道格式化日期字符串的函数。

记录我看到的这个对象,它有一个属性:_f: YYYY-MM-DD HH:mm:ss" 和另一个属性:_i: "2018-01-17 13:51:54"

有没有办法获得_f_i 的值?

编辑:
最后,我想得到"2018-01-17 13:51:54" 而不是真正的_f_i

EDIT2:
myDate 充当该函数内的 Moment 对象。即:我正在扩展 MomentDateAdapter 并覆盖 format(date: Moment, displayFormat: string): string {} 所以 date 是一个 Moment 对象。这在 Material2 Datepicker 中使用。

EDIT3 - 一些结果:
toString:Wed Jan 17 2018 14:10:53 GMT+0100
格式:2018-01-17T14:10:53+01:00
toISOString:2018-01-17T13:10:53.000Z

【问题讨论】:

  • 如果你的对象叫obj,难道obj._f不给你想要的值吗?
  • 不,因为 _f 是“私有的”。
  • moment.format() 返回一个字符串 => myDate 是一个字符串,见momentjs.com/docs
  • 在我的函数中,myDate 充当 Moment 对象。
  • 那么您的代码与显示的不同,因为format() 返回字符串

标签: javascript angular typescript momentjs angular-material2


【解决方案1】:

作为Internal Properties 引导状态,您可以使用:

要打印 Moment 的值,请使用 .format().toString().toISOString()

代替_i,而您可以使用creationData()返回的format属性代替_f


编辑后(最后,我想得到“2018-01-17 13:51:54”而不是真正的_f_i),你可以简单地使用@ 987654323@

let myDate = moment.utc('2018-01-17 13:51:54'); // myDate is a moment object
let cData = myDate.creationData();
console.log( myDate.format("YYYY-MM-DD HH:mm:ss") );
console.log( cData.format );
console.log( myDate.format(cData.format) );
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"></script>

【讨论】:

  • 感谢您的提示,但这仍然不是我想要的。
  • @flow3r 抱歉,我在最后 2 次编辑之前给出了答案。由于myDate 是一个时刻对象,你想要的输出是什么?你需要得到什么?
  • @flow3r 我已经更新了我的 sn-p。在我回答的第一部分中,我展示了如何替换内部属性(_i_f)。我担心我仍然会错过您想要的输出。此外,'myDate' 被 Angular 转换为时刻对象是什么意思?也许你可以分享你的相关_Angular_code。
  • 哦,你是对的,对不起!我错过了你回答的重点。这就是我要找的东西:myDate.creationData().format - 谢谢!
  • @flow3r 别担心,我很高兴我的回答有帮助! :)
猜你喜欢
  • 1970-01-01
  • 2015-10-28
  • 1970-01-01
  • 2016-02-10
  • 2023-03-12
  • 1970-01-01
  • 2016-05-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多