158

我想将日期格式化为mm/dd/yyyy. 我尝试了以下方法,但都不适合我。谁能帮我这个?

参考:ui-日期

<input ui-date ui-date-format="mm/dd/yyyy" ng-model="valueofdate" /> 

<input type="date" ng-model="valueofdate" />
4

15 回答 15

216

Angular.js 有一个内置的日期过滤器。

演示

// in your controller:
$scope.date = '20140313T00:00:00';

// in your view, date property, filtered with date filter and format 'MM/dd/yyyy'
<p ng-bind="date | date:'MM/dd/yyyy'"></p>

// produces
03/13/2014

您可以在日期过滤器的源中查看支持的日期格式。

编辑

如果您尝试在 datepicker 中获取正确的格式(不清楚您是使用 datepicker 还是只是尝试使用它的格式化程序),那些支持的格式字符串在这里:https ://api.jqueryui.com/datepicker/

于 2014-03-14T02:53:29.083 回答
103

如果您没有输入字段,而只想显示具有正确格式的字符串日期,您可以简单地选择:

<label ng-bind="formatDate(date) |  date:'MM/dd/yyyy'"></label>

并在 js 文件中使用:

    // @Function
    // Description  : Triggered while displaying expiry date
    $scope.formatDate = function(date){
          var dateOut = new Date(date);
          return dateOut;
    };

这会将字符串中的日期转换为 javascript 中的新日期对象,并以 MM/dd/yyyy 格式显示日期。

输出: 2014 年 12 月 15 日

编辑
如果您使用格式为“2014-12-19 20:00:00”字符串格式的字符串日期(从 PHP 后端传递),那么您应该将代码修改为:https ://stackoverflow.com /a/27616348/1904479

进一步
从 javascript 添加,您可以将代码设置为:

$scope.eqpCustFields[i].Value = $filter('date')(new Date(dateValue),'yyyy-MM-dd');

如果您已经与您约会,则可以使用以下代码获取当前系统日期:

$scope.eqpCustFields[i].Value = $filter('date')(new Date(),'yyyy-MM-dd');

有关日期格式的更多详细信息,请参阅: https ://docs.angularjs.org/api/ng/filter/date

于 2014-12-23T06:47:15.430 回答
30

我正在使用它,它工作正常。

{{1288323623006 | date:'medium'}}: Oct 29, 2010 9:10:23 AM
{{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}: 2010-10-29 09:10:23 +0530
{{1288323623006 | date:'MM/dd/yyyy @ h:mma'}}: 10/29/2010 @ 9:10AM
{{1288323623006 | date:"MM/dd/yyyy 'at' h:mma"}}: 10/29/2010 at 9:10AM
于 2016-08-10T11:45:05.077 回答
19

这并不是您真正要求的 - 但您可以尝试在 html 中创建一个日期输入字段,例如:

<input type="date" ng-model="myDate" />

然后将其打印在您将使用的页面上:

<span ng-bind="convertToDate(myDate) | date:'medium'"></span>

最后,在我的控制器中,我声明了一个从输入值创建日期的方法(在 chrome 中显然解析了 1 天):

$scope.convertToDate = function (stringDate){
  var dateOut = new Date(stringDate);
  dateOut.setDate(dateOut.getDate() + 1);
  return dateOut;
};

所以你有它。要查看整个工作,请参阅以下 plunker:http ://plnkr.co/edit/8MVoXNaIDW59kQnfpaWW?p=preview 。祝你好运!

于 2014-03-14T00:07:57.040 回答
11

这将起作用:

{{ oD.OrderDate.replace('/Date(','').replace(')/','') | date:"MM/dd/yyyy" }}

注意:一旦你替换了这些,那么剩余的日期/毫秒将被转换为给定的格式。

于 2015-07-21T07:19:11.397 回答
11

我用过滤器

.filter('toDate', function() {
  return function(items) {
    return new Date(items);
  };
});

然后

{{'2018-05-06 09:04:13' | toDate | date:'dd/MM/yyyy hh:mm'}}
于 2018-11-18T10:11:46.240 回答
10

请参阅Angular dateapi:AngularJS API:日期


Angular -date过滤器:

用法:

{{ date_expression | date  [: 'format']  [: 'timezone' ] }}


示例:

代码:

 <span>{{ '1288323623006' | date:'MM/dd/yyyy' }}</span>

结果:

10/29/2010
于 2016-05-31T02:06:34.303 回答
4

只需将 UTC 日期格式从您的服务器端代码传递到客户端

并使用以下语法 -

 {{dateUTCField  +'Z' | date : 'mm/dd/yyyy'}}

 e.g. dateUTCField = '2018-01-09T10:02:32.273' then it display like 01/09/2018
于 2018-01-11T05:06:08.750 回答
1
var app=angular.module('myApp',[]);
        app.controller('myController',function($scope){         
              $scope.names = ['1288323623006','1388323623006'];

        });

这里控制器名称是“myController”,应用程序名称是“myApp”。

<div ng-app="myApp" ng-controller="myController">
        <ul>
            <li ng-repeat="x in names">
                {{x | date:'mm-dd-yyyy'}}

            </li>

        </ul>
    </div>

结果将如下所示:- * 10-29-2010 * 01-03-2013

于 2017-12-09T11:48:50.570 回答
1

在查看了上述所有解决方案之后,以下是我最快的解决方案。如果您使用的是角材料:

 <md-datepicker ng-model="member.reg_date" md-placeholder="Enter date"></md-datepicker>

设置格式:

app.config(function($mdDateLocaleProvider) {
    $mdDateLocaleProvider.formatDate = function(date) {
        // Requires Moment.js OR enter your own formatting code here....
        return moment(date).format('DD-MM-YYYY');
    };
});

编辑:您还需要设置 parseDate 以输入日期(来自this answer Change format of md-datepicker in Angular Material

$mdDateLocaleProvider.parseDate = function(dateString) {
    var m = moment(dateString, 'DD/MM/YYYY', true);
    return m.isValid() ? m.toDate() : new Date(NaN);
};
于 2016-07-13T13:50:52.293 回答
1
{{convertToDate  | date :  dateformat}}                                             
$rootScope.dateFormat = 'MM/dd/yyyy';
于 2019-07-26T09:57:31.020 回答
0

我遇到了同样的问题,并且和上面的评论一样,我认为 JavaScript 中必须有一个本地方法。事情是new Date(valueofdate)返回一个 Date 对象。

但是,请查看http://www.w3schools.com/js/js_date_formats.asp,表示前导零的部分。来自字符串的日期,例如来自 PHP 的回显,必须类似于:

$valueofdate = date('Y-n-j',strtotime('theStringFromQuery'));

这将传递一个字符串,例如:'1999-3-3'并且 JavaScript 将解析一个具有正确格式的对象

$scope.valueofdate = new Date(valueofdate);

<input ui-date ui-date-format="mm/dd/yyyy" ng-model="valueofdate" />
<input type="date" ng-model="valueofdate" />

日期格式的 PHP 链接:http: //www.w3schools.com/php/func_date_date_format.asp

于 2016-09-04T14:36:08.350 回答
0

好的,问题似乎来自这一行:
https ://github.com/angular-ui/ui-date/blob/master/src/date.js#L106 。

实际上这一行是与 jQuery UI 的绑定,它应该是注入数据格式的地方。

正如您所看到的,var opts没有任何属性dateFormat具有 ng-date-format 的值,正如您所预料的那样。

无论如何,该指令有一个常量调用uiDateConfig来添加属性到opts.

灵活的解决方案(推荐):

这里你可以看到你可以插入一些选项,在指令中注入一个带有 jquery ui 选项的控制器变量。

<input ui-date="dateOptions" ui-date-format="mm/dd/yyyy" ng-model="valueofdate" />

myAppModule.controller('MyController', function($scope) {
    $scope.dateOptions = {
        dateFormat: "dd-M-yy"
    };
});

硬编码解决方案:

如果您不想一直重复此过程uiDateConfig,请将 date.js 中的值更改为:

.constant('uiDateConfig', { dateFormat: "dd-M-yy" })
于 2015-11-16T01:43:38.863 回答
0

ng-bind="reviewData.dateValue.replace('/Date(','').replace(')/','') | date:'MM/dd/yyyy'"

使用它应该可以很好地工作。:) reviewData 和 dateValue 字段可以根据您的参数进行更改,其余部分可以保持不变

于 2017-05-10T07:46:54.737 回答
-1
// $scope.dateField="value" in ctrl
<div ng-bind="dateField | date:'MM/dd/yyyy'"></div>
于 2017-08-13T21:01:20.327 回答