如果日期格式是$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');
Why the new Date()
如果日期格式带有(-)则不接受? new Date() 转换是否取决于我的系统日期格式?
为什么 new Date() 不接受带有 (-) 的日期格式?
解析除有限子集之外的日期字符串ISO 8601 包含在 ECMA-262 中 http://ecma-international.org/ecma-262/7.0/index.html#sec-date-time-string-format取决于实现。您可能会得到正确的结果、错误的结果或无效的日期。因此强烈建议不要使用Date构造函数或日期解析要解析字符串(它们与解析等效),请始终使用库或定制函数手动解析字符串。
new Date() 转换是否取决于我的系统日期格式?
否。约定支持多种格式(请参阅MDN Date https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date),但是您不应该依赖它,因为某些浏览器会在某些浏览器中进行解析或以不同方式进行解析,但在其他浏览器中则不然。
您可以尝试以下库之一:
-
Moment.js http://momentjs.com:解析、格式化、算术、操作
-
Fecha.js https://github.com/taylorhakes/fecha: 只是解析和格式化
PS
如果您只想将 '2016-12-16 07:02:15 am' 重新格式化为 '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))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)