在angualrjs中从字符串创建日期对象

时间:2015-08-11 09:19:50

标签: angularjs angular-ui-bootstrap

我正在使用angularjs和angularjs bootstrap ui(http://angular-ui.github.io/bootstrap/)。

我想使用datepicker指令(http://angular-ui.github.io/bootstrap/#/datepicker)。

我从数据库中获取字符串值

2015-07-30 15:10

Angular希望将日期对象作为模型,但我无法使用该字符串创建日期对象。我得到的错误是

错误:[ngModel:datefmt] http://errors.angularjs.org/1.4.3/ngModel/datefmt?p0=2015-07-30

anyboy可以帮我用角度创建一个日期对象,其字符串具有这种格式 - >的 YYYY-MM-DD

更多信息: 字符串在我的范围内

$scope.event.startdate

我将它分为日期,小时和分钟。

$scope.startpoint = {
            date: $scope.event.startdate.substring(0, 10),
            hours: $scope.event.startdate.substring(11, 13),
            mins: $scope.event.startdate.substring(14, 16)
        };

数据库是MongoDB

谢谢 阿德里安

3 个答案:

答案 0 :(得分:3)

您可以使用通用的JavaScript解决方案。例如,您可以serega386's answer使用similar javascript question

var st = "26.04.2013";
var pattern = /(\d{2})\.(\d{2})\.(\d{4})/;
var dt = new Date(st.replace(pattern,'$3-$2-$1'));

答案 1 :(得分:1)

您可以在控制器中使用以下代码

$scope.newDate =new Date($scope.event.startdate);

以及模板中的代码

{{newDate | date:'yyyy-MM-dd'}}

参考:AngularJS/javascript converting a date String to date object

答案 2 :(得分:0)

如果您将日期作为单个数字集来获取

1288323623006

您可以直接在其上使用日期格式化程序。(来自angular doc here

<span ng-non-bindable>{{1288323623006 | date:'medium'}}</span>:
<span>{{1288323623006 | date:'medium'}}</span><br>
<span ng-non-bindable>{{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}</span>:
<span>{{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}</span><br>

预期结果

angular date format

我希望能解决你的问题,让我知道如果我错过了什么。