Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将unix时间戳转换为calendar date moment.js_Javascript_Datetime_Momentjs - Fatal编程技术网

Javascript 如何将unix时间戳转换为calendar date moment.js

Javascript 如何将unix时间戳转换为calendar date moment.js,javascript,datetime,momentjs,Javascript,Datetime,Momentjs,我有一个unix时间戳,我正在尝试将其转换为日历日期,例如MM/DD/YYYY。 到目前为止,我有: $(文档).ready(函数(){ var value=$(“#unixtime”).val();//这将检索unix时间戳 var dateString=时刻(值).calendar(); 警报(日期字符串); }); 当我试图打印日历日期时,窗口显示“无效日期”。有人能帮我吗 UNIX时间戳它是从1970年开始的秒数,因此您需要将其转换为JS Date对象: var date = new

我有一个unix时间戳,我正在尝试将其转换为日历日期,例如
MM/DD/YYYY
。 到目前为止,我有:

$(文档).ready(函数(){
var value=$(“#unixtime”).val();//这将检索unix时间戳
var dateString=时刻(值).calendar();
警报(日期字符串);
});

当我试图打印日历日期时,窗口显示“无效日期”。有人能帮我吗

UNIX时间戳它是从1970年开始的秒数,因此您需要将其转换为JS Date对象:

var date = new Date(unixTimestamp*1000);

按照您的要求使用moment.js,有一种方法可以以秒为单位接受unix时间戳:

var dateString = moment.unix(value).format("MM/DD/YYYY");
提供可以使用的

以下是一个例子:

const moment = require('moment');

const timestamp = 1519482900000;
const formatted = moment(timestamp).format('L');

console.log(formatted); // "02/24/2018"

我像这个例子一样修正了它

$scope.myCalendar = new Date(myUnixDate*1000);
<input date-time ng-model="myCalendar" format="DD/MM/YYYY" />
$scope.myCalendar=新日期(myUnixDate*1000);

可能有点晚,但对于像这样的新问题,我使用以下代码:

moment(timestamp, 'X').format('lll');
您可以更改格式以满足您的需要,还可以添加时区,如下所示:

moment(timestamp, 'X').tz(timezone).format('lll');
有一个和一个

虽然严格模式在大多数情况下工作得更好,但当传递给矩的字符串的格式可能不同时,宽恕模式非常有用

在以后的版本中,解析器将默认使用严格模式。 严格模式要求时刻的输入与指定格式(包括分隔符)完全匹配。严格模式通过将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.unix(date).toDate();

此函数用于根据时间戳创建日期:

    function formatDateTime(dateString) {
        const parsed = moment(new Date(dateString))

        if (!parsed.isValid()) {
            return dateString
        }

        return parsed.format('MMM D, YYYY, HH:mmA')
    }

这不是一个日历日期。@IanWarburton-不是吗?我想是根据这个问题。但我认为moment.js中的日历日期如下所示。。。。moment(new Date(item.Date)).calendar()@IanWarburton-您不需要新的日期对象。
calendar
函数很好(),但不是OP要求的格式。值得注意的是,为什么这个问题失败了,但它起作用了。原因是因为
monent(number)
(与
Date
对象一致),而unix时间戳默认以秒为单位。因此,您也可以使用
moment(value*1000)
而不是
moment.unix(value)
,但是使用
unix
更清晰。虽然此代码可以回答问题,但最好包含一些上下文,解释其工作原理,并描述何时使用它。从长远来看,只使用代码的答案是没有用的。此外,您的代码格式不正确。是的,这是最新版本的moment的解决方案,或者至少是我最近从npm获得的解决方案。尽管我在再次实例化时得到了.unix()。例如:moment(moment().unix()*1000)与moment.js逻辑相比,这是我在这里看到的最好的方法。只需添加到这个答案(这是这里最正确的答案)。对于ms unix时间戳,请使用小写的
x
。虽然这段代码可能会解决OP的问题,但最好包括关于代码如何解决OP问题的解释。通过这种方式,未来的访问者可以从您的帖子中学习,并将其应用到自己的代码中。因此,它不是一种编码服务,而是一种知识资源。此外,高质量、完整的答案更有可能被提升。这些特性,以及所有帖子都是独立的要求,是SO作为一个平台的一些优势,使其区别于论坛。您可以编辑以添加其他信息和/或用源文档补充您的解释。“Fecha inválida”以及您提供的示例
moment.unix(date).toDate();
    function formatDateTime(dateString) {
        const parsed = moment(new Date(dateString))

        if (!parsed.isValid()) {
            return dateString
        }

        return parsed.format('MMM D, YYYY, HH:mmA')
    }
moment(1454521239279).toDate()
moment(1454521239279).format()
moment(timestamp).format('''any format''')