admin管理员组文章数量:1129783
How do I properly display the date and time in AngularJS?
The output below shows both the input and the output, with and without the AngularJS date filter:
In: {{v.Dt}}
AngularJS: {{v.Dt | date:'yyyy-MM-dd HH:mm:ss Z'}}
This prints:
In: 2012-10-16T17:57:28.556094Z
AngularJS: 2012-10-16T17:57:28.556094Z
The desired display format is
2010-10-28 23:40:23 0400
or 2010-10-28 23:40:23 EST
How do I properly display the date and time in AngularJS?
The output below shows both the input and the output, with and without the AngularJS date filter:
In: {{v.Dt}}
AngularJS: {{v.Dt | date:'yyyy-MM-dd HH:mm:ss Z'}}
This prints:
In: 2012-10-16T17:57:28.556094Z
AngularJS: 2012-10-16T17:57:28.556094Z
The desired display format is
2010-10-28 23:40:23 0400
or 2010-10-28 23:40:23 EST
13 Answers
Reset to default 123Your code should work as you have it see this fiddle.
You'll have to make sure your v.Dt
is a proper Date object for it to work though.
{{dt | date:'yyyy-MM-dd HH:mm:ss Z'}}
or if dateFormat is defined in scope as dateFormat = 'yyyy-MM-dd HH:mm:ss Z':
{{dt | date:dateFormat }}
v.Dt is likely not a Date() object.
See http://jsfiddle.net/southerd/xG2t8/
but in your controller:
scope.v.Dt = Date.parse(scope.v.Dt);
I know this is an old item, but thought I'd throw in another option to consider.
As the original string doesn't include the "T" demarker, the default implementation in Angular doesn't recognize it as a date. You can force it using new Date, but that is a bit of a pain on an array. Since you can pipe filters together, you might be able to use a filter to convert your input to a date and then apply the date: filter on the converted date. Create a new custom filter as follows:
app
.filter("asDate", function () {
return function (input) {
return new Date(input);
}
});
Then in your markup, you can pipe the filters together:
{{item.myDateTimeString | asDate | date:'shortDate'}}
you can get the 'date' filter like this:
var today = $filter('date')(new Date(),'yyyy-MM-dd HH:mm:ss Z');
This will give you today's date in format you want.
Here is a filter that will take a date string OR javascript Date() object. It uses Moment.js and can apply any Moment.js transform function, such as the popular 'fromNow'
angular.module('myModule').filter('moment', function () {
return function (input, momentFn /*, param1, param2, ...param n */) {
var args = Array.prototype.slice.call(arguments, 2),
momentObj = moment(input);
return momentObj[momentFn].apply(momentObj, args);
};
});
So...
{{ anyDateObjectOrString | moment: 'format': 'MMM DD, YYYY' }}
would display Nov 11, 2014
{{ anyDateObjectOrString | moment: 'fromNow' }}
would display 10 minutes ago
If you need to call multiple moment functions, you can chain them. This converts to UTC and then formats...
{{ someDate | moment: 'utc' | moment: 'format': 'MMM DD, YYYY' }}
https://gist.github.com/cmmartin/341b017194bac09ffa1a
Here are a few popular examples:
<div>{{myDate | date:'M/d/yyyy'}}</div>
7/4/2014
<div>{{myDate | date:'yyyy-MM-dd'}}</div>
2014-07-04
<div>{{myDate | date:'M/d/yyyy HH:mm:ss'}}</div>
7/4/2014 12:01:59
Have you seen the Writing directives (short version) section of the documentation?
HTML
<div ng-controller="Ctrl2">
Date format: <input ng-model="format"> <hr/>
Current time is: <span my-current-time="format"></span>
</div>
JS
function Ctrl2($scope) {
$scope.format = 'M/d/yy h:mm:ss a';
}
Inside a controller the format can be filtered by injecting $filter.
var date = $filter('date')(new Date(),'MMM dd, yyyy');
Simplly if you want to output like "Jan 30, 2017 4:31:20 PM" then follow to simple step
step1- Declare following variable in js controller
$scope.current_time = new Date();
step2- display in html page like
{{current_time | date:'medium'}}
we can format the date on view side in angular is very easy....please check the below example:
{{dt | date : "dd-MM-yyyy"}}
You can use momentjs
to implement date-time filter in angularjs.
For example:
angular.module('myApp')
.filter('formatDateTime', function ($filter) {
return function (date, format) {
if (date) {
return moment(Number(date)).format(format || "DD/MM/YYYY h:mm A");
}
else
return "";
};
});
Where date is in time stamp format.
Add $filter
dependency in controller.
var formatted_datetime = $filter('date')(variable_Containing_time,'yyyy-MM-dd HH:mm:ss Z')
I would suggest you to use moment.js it has got a good support for date formatting according to locales.
create a filter that internally uses moment.js method for formatting date.
本文标签: javascriptFormat Date time in AngularJSStack Overflow
版权声明:本文标题:javascript - Format Date time in AngularJS - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1736753816a1951176.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论