服务端是否没有toLocaleFormat()这个方法?
发布于 11 年前 作者 shaman 6305 次浏览 最后一次编辑是 8 年前

代码是这样的,获取某一个文件目录:

getToc: function(dir, callback){
    //console.log(dir)
    var resJSON = {
        queryDir: dir,
        folder: [],
        document: []
    };
    fs.readdir(dir, function(err, files){
        if(err){
            resJSON.err = err;
            callback(resJSON);
            return;
        }
        for(var i = 0, len = files.length; i < len; i++){
            var pathname = dir + "\/" + files[i];
            var stat = fs.lstatSync(pathname);
            if (!stat.isDirectory()){
                var a = files[i].split('.');
                var date = new Date(stat.atime).toLocaleFormat();  //这行报错
                resJSON.document.push({type:a[a.length-1],name:files[i],size:stat.size,lastModfied:date});
            } else {
                resJSON.folder.push(files[i]);
            }
        }
        callback(resJSON);
    });
}

错误提示是没有toLocaleFormat方法:TypeError: Object Mon Jan 28 2013 20:20:33 GMT+0800 (CST) has no method 'toLocaleFormat’ 在客户端下面代码能正确输出时间格式的: enter image description here 为什么服务端这个方法不存在呢?

6 回复

我用 moment module处理日期/时间,推荐试一试。

enter link description here

$ node
> var moment = require('moment')
> moment().local().toString()
'Mon Jan 28 2013 15:01:30 GMT-0500 (EST)'
> 

我记得没这个方法吧,你要用的是toLocaleString吗?

多谢,可以试试

不是 ,就是toLocaleFormat() , 能像浏览器端那样将一个日期对象Mon Jan 28 2013 20:20:33 GMT+0800 (CST) 转化成一般的时间格式就可以

没有这个方法的,我在控制台输出了一下,发现只有以下三种方法:

toLocaleDateString
toLocaleString
toLocaleTimeString

另外像leapon所说,用moment也可以解决,但是像这种简单的能不用别人的module还是尽量不用的好

@shaman 这货只有FireFox才有的吧?人家Chrome和IE都木有。。。。 Node.js和Chrome用的都是V8引擎

回到顶部