【发布时间】:2015-11-04 02:27:48
【问题描述】:
我是一个典型的服务器端开发人员,我感觉有点像一条离开水的鱼,试图在前端显示时间值。如何从 moment.js 中获取 PHP 的 date() 和 strtotime() 函数之类的行为?我只想让 unix 时间戳以 H:i:s 格式出现,反之亦然。
到目前为止,我已经从现有示例代码和文档中尝试了以下内容:
moment(timestamp).format(H:i:s);
moment().duration(timestamp).format(H:i:s);
moment.unix(timestamp).format(h:mm:ss);
moment(formatted,'H:i:s');
没有一个可以正常工作。这可能会被标记为重复,因为那里有很多 moment.js 问题,但我不知道它是对库本身的更新还是略有不同的上下文,我还没有找到一个对我有用的现有解决方案。
有人对这两个简单的任务有什么建议吗?
编辑: 我从中提炼出两个不同的问题。一个是文档 say 应该起作用的那一刻的功能给出了奇怪的值:
moment(1437462000).format('h:mm:ss')
例如,应该返回 7:00:00 UTC,返回 10:17:42。在这种情况下,可以通过使用 moment.unix(1437462000).utc().format('h:mm:ss') 来解决此问题,但这会导致第二个问题 - .utc() 函数似乎被忽略了从日期转换回时间戳时:
timestamp = moment(formatted,'DD/MM/YYYY H:m:s').utc().unix();
无论是否包含 .utc() 函数,仍将返回一个时区校正值(在我的情况下,这是不正确的几个小时,因为有问题的格式化时间与客户端计算机无关)。
【问题讨论】:
-
您是否将函数的结果放在屏幕上?还是您正在生成一个用于其他功能的值?
-
在尝试将时间戳转换为格式化时间的情况下,它是为了显示。对于另一种方式(格式化为时间戳)的情况,它是解析用户输入以供函数使用。
-
文档声明它应该是“时刻(时间戳)”或
moment.unix(timestamp)。这些价值观有多错误?你有多确定你的时间戳是正确的? -
moment(timestamp) 为我返回了非常奇怪的值。 moment.unix(timestamp) 返回大致正确的东西,但它已经关闭了 4 小时。似乎是时区问题。我知道时间戳是正确的,因为 PHP 的 date() 在同一页面上格式化了相同的时间戳。
标签: javascript php jquery date momentjs