当前位置:  开发笔记 > 编程语言 > 正文

AngularJS:如何格式化ISO8601日期格式?

如何解决《AngularJS:如何格式化ISO8601日期格式?》经验,为你挑选了3个好方法。

我正在使用bootstrap-datetimepicker并使用ISO8601 datetime格式,yyyy-mm-ddThh:ii:ssZ如其选项部分所述

在我的控制器中,我做到了

transaction.date = $('.form_datetime input').val();

它将数据发送到后端(console.log)

created_on: "Wed, 08 May 2013 23:18:32 -0000"

并保存在数据库中

2013-05-08 16:18:32-07

在我的模板中,我做到了

{{ transaction.created_on | date:'medium'}}

我看到HTML上的输出为

Wed, 08 May 2013 23:18:32 -0000

但根据Angular doc,它应该是格式化的Oct 28, 2010 8:40:23 PM

我错过了什么?



1> Robbo..:

我不明白为什么没有人提供在过滤器中使用正确格式的简单答案?

{{item.date | date:'yyyy-MM-ddTHH:mm:ssZ'}}

格式为ISO-8601



2> daydreamer..:

现在,我已经创建了一个过滤器

angular.module('customFilters', []).
  filter('dateInMillis', function() {
    return function(dateString) {
      return Date.parse(dateString);
    };
  });

作为依赖添加app.js

var app = angular.module('myApp', [
  '$strap.directives', 'ngCookies', 'categoryServices', 'transactionServices',
  'customFilters'
]);

HTML用它作为


{{ transaction.created_on | dateInMillis | date: 'medium'}}

并且提供日期HTML

May 8, 2013 5:14:36 PM 

如果您知道更好的主意,请告诉我



3> Antonio Max..:

在巴西(以及欧洲大部分地区,澳大利亚等),我们使用DB上的默认MySQL DATETIME:

"Y-m-d HH:ii:ss"

但是使用date()来显示它:

"d/m/Y HH:ii:ss"

因此,为了以角度"正确"显示该日期,请创建一个过滤器:

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
    }
});

然后,在您的角度应用程序上,只需调用过滤器并格式化显示值:

{{ item.datetime_value | brDateFilter | date:"dd/MM/yyyy HH:mm" }}

这包括巴西,英国,新西兰等日期格式的角度日期格式,只需正确减去时区.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有