日期:2014-05-16  浏览次数:20375 次

字符串日期格式转换问题。
Jan 1, 2010 12:00:00 AM
请问这种格式的字符串。
怎么转换为
2010-01-01 12:00:00 这种格式呢?
谢谢。

------解决方案--------------------
js本身不能直接指定日期时间的输出格式的,new Date().toString(),或者toLocaleString 都是按操作系统区域设置里的时间日期格式输出的

如果是sql 数据库 通过 指定 convert(varchar(20),getdate(),120) 就可以指定输出2010-01-01 12:00:00这种格式

当然,在js里要想转,你可以自己写函数来处理。
------解决方案--------------------
JScript code
var str = 'Jan 1, 2010 12:00:00 AM';
str = str.substring(0, str.lastIndexOf(' '));
var d = new Date(str);

str = d.getFullYear() + '-' + ((d.getMonth() + 1 > 9) ? d.getMonth() + 1 : ('0' + (d.getMonth() + 1).toString())) + '-';
str += (d.getDate() > 9 ? d.getDate() : '0' + d.getDate().toString()) + ' ';
str += (d.getHours() > 9 ? d.getHours() : '0' + d.getHours().toString()) + ':';
str += (d.getMinutes() > 9 ? d.getMinutes() : '0' + d.getMinutes().toString()) + ':';
str += d.getSeconds() > 9 ? d.getSeconds() : '0' + d.getSeconds().toString();
alert(str);

//格式化输出的部分写得有点烦了,自己精简优化下。。。

------解决方案--------------------
JScript code
var str = 'Jan 1, 2010 12:00:00 AM';
str = str.substring(0, str.lastIndexOf(' '));
var d = new Date(str);


//改进一下格式化的代码,但是感觉还是挺麻烦,不知道是不是有更好的方法
var ar_date = f([d.getFullYear(), d.getMonth() + 1, d.getDate()]);
var ar_time = f([d.getHours(), d.getMinutes(), d.getSeconds()]);
//补零小函数
function f(ar) {
    for(var i = 0; i < ar.length; i ++) if (ar[i] < 10) ar[i] = '0' + ar[i].toString();
    return ar;
}

var result = ar_date.join('-') + ' ' + ar_time.join(':');
alert(result);

------解决方案--------------------
JScript code

        <script>
            var s = 'Jan 1, 2010 12:00:00 AM';
            var d = new Date(s.split('AM')[0]);
            alert(d.toLocaleString().replace(/年|月/g, '-').replace('日', '').replace(/[\u4E00-\u9FFF]/g, ''));
        </script>