AngularJS:如何格式化ISO8601日期格式?(AngularJS: How to form

2019-09-02 07:52发布

我使用的自举的DateTimePicker和使用ISO8601日期时间格式为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

在我的模板,我做

<td>{{ transaction.created_on | date:'medium'}}</td>

我看到在我的HTML输出作为

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

但是,随着每角文档 ,它应该是格式Oct 28, 2010 8:40:23 PM

那是什么我失踪?

Answer 1:

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

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

这将格式化为ISO-8601



Answer 2:

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

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中使用它作为

<!-- added dateInMillis to pass to date to filter Angular way -->
<td>{{ transaction.created_on | dateInMillis | date: 'medium'}}</td>

并呈现上日期HTML作为

May 8, 2013 5:14:36 PM 

如果你知道一个更好的主意,请让我知道



Answer 3:

在巴西(和大多数欧洲,澳洲等),我们使用MySQL默认DATETIME在DB的:

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

但是,使用日期()像这样显示出来:

"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" }}

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



Answer 4:

除了这一切,只是你有这样的变化,

<td>{{ transaction.created_on | date:'medium'}}</td>

尝试WIRTE它作为

<td>{{ transaction.created_on | date:'MMM d, y h:mm:ss a'}}</td>


文章来源: AngularJS: How to format ISO8601 date format?