将25-May-16转换为'dd MMMM yyyy'格式

时间:2016-06-21 08:54:49

标签: javascript angularjs

我正在开发angularjs应用程序。 有一个变量被赋予一个日期值。该值是从Web API中提取的。此变量的计算结果为'25 -May-15'

以下是我现有的代码

//code to assign value (25-May-16 in this case) into $scope.models.AppointmentDate from Web API
....
var DateVal = $scope.models.AppointmentDate;
DateVal = $filter('date')(DateVal , 'dd MMMM yyyy');

此代码在DateVal变量中为我提供了“无效日期”值。 实现这一目标的最佳方法是什么?

4 个答案:

答案 0 :(得分:0)

这意味着你没有日期对象,但可能只是一个字符串。尝试这样的事情:

struct thread_context {
  Base* object;
  void (Base::*func)(void*);
};

void *thread_routine(void *arg) {
   thread_context* context = static_cast<thread_context*>(arg);
   context->object->(*context->func)(nullptr);
   ...
}

...
thread_context context = {
   b1,
   &Base::threadCall1
};
pthread_create(&t1,NULL,&thead_routine, &context);

答案 1 :(得分:0)

你应该试试moment.js

你可以像

一样使用它
moment("25-may-16","dd-MMM-yy").format("dd MMMM yy");

尝试使用您的代码和逻辑。 angularJS也有时刻。探索更多。

答案 2 :(得分:0)

解析日期字符串到日期对象需要很多考虑。例如:new Date('25-May-16')可能适用于较新的浏览器,但不适用于旧版本。它可能适用于您的情况,也可能不适用。我强烈推荐moment.js因为它会解决大部分问题,但如果您需要本机JavaScript解决方案,请使用以下代码段:

var DateVal = new Date($scope.models.AppointmentDate);
DateVal = $filter('date')(DateVal , 'dd MMMM yyyy');

您试图将日期字符串传递给Angular的过滤器,该过滤器需要将日期对象作为输入参数。

更新: MomentJS解决方案:

var DateVal = moment('25-May-16', 'DD-MMM-YY').toDate()
DateVal = $filter('date')(DateVal , 'dd MMMM yyyy');

将日期格式作为第二个参数传递给moment()非常重要,否则时刻将回退到本机日期解析方法

答案 3 :(得分:0)

你可以像下面这样做

 var date = '25-August-16';
 $scope.date = new Date(date);
 $scope.date = $scope.date.toLocaleDateString("en-au", {year: "numeric", month: "long",day: "numeric"}).replace(/\s/g,' ');

https://plnkr.co/edit/RlatXtIcK4QdOVlyGdG6?p=preview