Skip to content

Instantly share code, notes, and snippets.

@jjosef
Last active January 2, 2016 12:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jjosef/8301048 to your computer and use it in GitHub Desktop.
Save jjosef/8301048 to your computer and use it in GitHub Desktop.
AngularJS Semantic Dates
<div ng-app="TypefooApp">
<div ng-controller="MainCtrl">
<ul>
<li ng-repeat="d in dates">
<span ng-bind="d | semanticDate"></span>
</li>
</div>
</div>
'use strict';
angular.module('TypefooApp', ['TypefooApp.filters']);
angular.module('TypefooApp')
.controller('MainCtrl', function($scope) {
var now = new Date();
$scope.dates = [
new Date(),
new Date().setDate(now.getDate()-1),
new Date().setDate(now.getDate()-2),
new Date().setDate(now.getDate()-3)
];
});
angular.module('TypefooApp.filters', [])
.filter('semanticDate', function() {
return function(input, options) {
var out = '';
var now = new Date();
var onedayago = new Date();
onedayago.setDate(onedayago.getDate() - 1);
var d = new Date(input);
var today = now.getDate() + now.getMonth() + now.getFullYear();
var yesterday = onedayago.getDate() + onedayago.getMonth() + onedayago.getFullYear();
var compare_date = d.getDate() + d.getMonth() + d.getFullYear();
var time = (d.getHours() > 11 ? (d.getHours() - 12) + ':' + d.getMinutes() + 'pm' : (d.getHours()) + ':' + + d.getMinutes() + 'am');
if(today === compare_date) {
out = 'Today ' + time;
} else {
if(compare_date === yesterday) {
out = 'Yesterday ' + time;
} else {
out = (d.getMonth() + 1) + '/' + (d.getDate()) + '/' + (d.getFullYear()) + ' ' + time;
}
}
return out;
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment