Answers:
按照您的要求使用moment.js,有一种unix
方法可以在几秒钟内接受unix时间戳:
var dateString = moment.unix(value).format("MM/DD/YYYY");
monent(number)
期望unix时间戳以毫秒为单位(与Date
对象一致),而unix时间戳默认以秒为单位。因此,您也可以moment(value*1000)
代替moment.unix(value)
,但使用起来unix
更清晰。
UNIX时间戳是1970年以来的秒数,因此您需要将其转换为JS Date对象:
var date = new Date(unixTimestamp*1000);
只有它
moment.unix(date).toDate();
可能会晚一点,但是对于这样的新问题,我使用以下代码:
moment(timestamp, 'X').format('lll');
您可以更改格式以满足您的需求,还可以添加时区,如下所示:
moment(timestamp, 'X').tz(timezone).format('lll');
x
ms UNIX时间戳记使用小写字母。这里的文档
我固定了这个例子。
$scope.myCalendar = new Date(myUnixDate*1000);
<input date-time ng-model="myCalendar" format="DD/MM/YYYY" />
$(document).ready(function() {
var value = $("#unixtime").val(); //this retrieves the unix timestamp
var dateString = moment(value, 'MM/DD/YYYY', false).calendar();
alert(dateString);
});
尽管严格模式在大多数情况下效果更好,但是当传递给当下的字符串格式可能有所不同时,宽容模式会非常有用。
在更高版本中,解析器将默认使用严格模式。严格模式要求输入的时间必须与指定格式完全匹配,包括分隔符。通过将true作为第三个参数传递给矩函数来设置严格模式。
在第三方API提供日期且该API的日期格式可能会更改的情况下,宽恕模式很有用。假设API首先以“ YYYY-MM-DD”格式发送日期,然后又更改为“ MM / DD / YYYY”格式。
在严格模式下,以下代码导致显示“无效日期”:
moment('01/12/2016', 'YYYY-MM-DD', true).format()
"Invalid date"
在使用格式字符串的宽恕模式下,您得到了错误的日期:
moment('01/12/2016', 'YYYY-MM-DD').format()
"2001-12-20T00:00:00-06:00"
另一种方式是
$(document).ready(function() {
var value = $("#unixtime").val(); //this retrieves the unix timestamp
var dateString = moment.unix(value).calendar();
alert(dateString);
});
moment(timestamp).format('''any format''')