我正在开发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变量中为我提供了“无效日期”值。 实现这一目标的最佳方法是什么?
答案 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,' ');