J'utilise bootstrap-datetimepicker et j'utilise le format de date/heure ISO8601 en tant que yyyy-mm-ddThh:ii:ssZ
comme indiqué dans la section options
Dans mon contrôleur, je fais
transaction.date = $('.form_datetime input').val();
qui envoie les données à backend en tant que (console.log)
created_on: "Wed, 08 May 2013 23:18:32 -0000"
et enregistre dans la base de données en tant que
2013-05-08 16:18:32-07
Dans mon modèle, je fais
<td>{{ transaction.created_on | date:'medium'}}</td>
et je vois la sortie sur mon HTML comme
Wed, 08 May 2013 23:18:32 -0000
Mais selon le Angular doc , il devrait s'agir du format Oct 28, 2010 8:40:23 PM
Qu'est-ce qui me manque?
Pour l'instant, j'ai créé un filtre
angular.module('customFilters', []).
filter('dateInMillis', function() {
return function(dateString) {
return Date.parse(dateString);
};
});
ajouté comme dépendance dans app.js
en tant que
var app = angular.module('myApp', [
'$strap.directives', 'ngCookies', 'categoryServices', 'transactionServices',
'customFilters'
]);
et dans HTML
utilisé comme
<!-- added dateInMillis to pass to date to filter Angular way -->
<td>{{ transaction.created_on | dateInMillis | date: 'medium'}}</td>
et qui présente la date sur HTML
comme
May 8, 2013 5:14:36 PM
Si vous connaissez une meilleure idée, s'il vous plaît faites le moi savoir
Je ne comprends pas pourquoi personne n'a fourni la simple réponse d'utiliser le bon format dans le filtre?
{{item.date | date:'yyyy-MM-ddTHH:mm:ssZ'}}
Cela formatera comme ISO-8601
Au Brésil (et dans la plupart des pays d’Europe, Australie, etc.), nous utilisons la valeur par défaut MySQL DATETIME sur les bases de données:
"Y-m-d HH:ii:ss"
Mais utilisez date () pour l’afficher comme ceci:
"d/m/Y HH:ii:ss"
Donc, pour afficher cette date sous forme angulaire, "correctement", créez un filtre:
var app = angular.module(...
// Converts MySQL datetime into readable BR format
/*
Converts 2013-10-18 18:47:15 into 1382122035000 so angular can format date
using brazilian standards
*/
app.filter('brDateFilter', function() {
return function(dateSTR) {
var o = dateSTR.replace(/-/g, "/"); // Replaces hyphens with slashes
return Date.parse(o + " -0000"); // No TZ subtraction on this sample
}
});
Ensuite, sur votre application angulaire, appelez simplement le filtre et formatez la valeur pour l'affichage:
{{ item.datetime_value | brDateFilter | date:"dd/MM/yyyy HH:mm" }}
Cela couvre le format de date au Brésil, au Royaume-Uni, en Nouvelle-Zélande, etc. format de date angulaire, il suffit de soustraire le fuseau horaire correctement.
A côté de tout cela, vous avez juste à changer comme ça,
<td>{{ transaction.created_on | date:'medium'}}</td>
essayez de l'écrire comme
<td>{{ transaction.created_on | date:'MMM d, y h:mm:ss a'}}</td>