如果日期格式为$scope.timestamp = '2016-12-16 07:02:15 am'
我想格式化为16/12/2016 07:02:15 am
我已经尝试过以下代码并且它运行良好
$scope.originalStamp = $filter('date')
(new Date($scope.timestamp.replace("-","/")),'dd-MM-yyyy HH:mm:ss a');
但我的问题是为什么
new Date($scope.timestamp)
总是返回null
如果不使用将( - )中的字符替换为(/)?
如果没有使用replace().
$scope.originalStamp = $filter('date')
(new Date($scope.timestamp),'dd-MM-yyyy HH:mm:ss a');
如果日期格式为( - ),
new Date()
为什么不接受?新的Date()转换是否取决于我的系统日期格式?
答案 0 :(得分:6)
如果日期格式为( - )?
,为什么新的Date()不接受
解析ISO 8601 included in ECMA-262的有限子集以外的日期字符串取决于实现。您可能会得到正确的结果,错误的结果或无效的日期。因此,强烈建议不要使用 Date 构造函数或 Date.parse 来解析字符串(它们等同于解析),始终使用库或定制函数手动解析字符串
新的Date()转换是否取决于我的系统日期格式?
没有。约定支持许多格式(参见MDN Date),但是你不应该依赖它,因为有些格式在某些浏览器中被解析或解析不同,而在其他浏览器中则不然。
您可以尝试以下其中一个库:
PS
如果你只想重新格式化2016-12-16 07:02:15 am' as' 16/12/2016 07:02:15 am',然后:
// Reformat a date like '2016-12-16 07:02:15 am' as
// '16/12/2016 07:02:15 am'
function reformatDate(s) {
var b = s.split(/[ -]/);
return [b[2],b[1],b[0]].join('/') + ' ' + b[3] + ' ' + b[4];
}
var s = '2016-12-16 07:02:15 am';
console.log(s + ' => ' + reformatDate(s))