如果是日期格式 $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()转换是否取决于我的系统日期格式?
RobG.. 6
如果日期格式为( - ),为什么新的Date()不接受?
除了ECMA-262中包含的ISO 8601的有限子集之外的日期字符串的解析是依赖于实现的.您可能会得到正确的结果,错误的结果或无效的日期.因此,强烈建议不要使用Date构造函数或Date.parse来解析字符串(它们等同于解析),始终使用库或定制函数手动解析字符串.
新的Date()转换是否取决于我的系统日期格式?
不是.约定支持许多格式(请参阅MDN日期),但是您不应该依赖它,因为某些浏览器在某些浏览器中解析或解析不同,而不是其他浏览器.
您可以尝试以下其中一个库:
Moment.js:解析,格式化,算术,操作
Fecha.js:只是解析和格式化
PS
如果您只想将'2016-12-16 07:02:15 am'重新格式化为'2016年12月12日上午07:02:15',那么:
// 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))
如果日期格式为( - ),为什么新的Date()不接受?
除了ECMA-262中包含的ISO 8601的有限子集之外的日期字符串的解析是依赖于实现的.您可能会得到正确的结果,错误的结果或无效的日期.因此,强烈建议不要使用Date构造函数或Date.parse来解析字符串(它们等同于解析),始终使用库或定制函数手动解析字符串.
新的Date()转换是否取决于我的系统日期格式?
不是.约定支持许多格式(请参阅MDN日期),但是您不应该依赖它,因为某些浏览器在某些浏览器中解析或解析不同,而不是其他浏览器.
您可以尝试以下其中一个库:
Moment.js:解析,格式化,算术,操作
Fecha.js:只是解析和格式化
PS
如果您只想将'2016-12-16 07:02:15 am'重新格式化为'2016年12月12日上午07:02:15',那么:
// 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))