为什么要使用JavaScript的getTime()不是一个功能?
-
26-09-2019 - |
题
我用下面的函数,
function datediff()
{
var dat1 = document.getElementById('date1').value;
alert(dat1);//i get 2010-04-01
var dat2 = document.getElementById('date2').value;
alert(dat2);// i get 2010-04-13
var oneDay = 24*60*60*1000; // hours*minutes*seconds*milliseconds
var diffDays = Math.abs((dat1.getTime() - dat2.getTime())/(oneDay));
alert(diffDays);
}
我得到的误差dat1.getTime()
不是函数....
解决方案
这是因为你的dat1
和dat2
变量只是字符串。
您应该分析他们获得Date
对象,该格式我总是用下面的功能:
// parse a date in yyyy-mm-dd format
function parseDate(input) {
var parts = input.match(/(\d+)/g);
// new Date(year, month [, date [, hours[, minutes[, seconds[, ms]]]]])
return new Date(parts[0], parts[1]-1, parts[2]); // months are 0-based
}
我使用此功能,因为 Date.parse(string)
(或new Date(string)
)方法的的实施依赖的和的 YYYY-MM-DD 的格式将工作在现代浏览器,但的不的IE浏览器,所以我更喜欢做手工
其他提示
要使用该功能/方法,需要进行类的日期强>的实例。
此方法总是配合使用的日期强>对象。
请参阅下面的代码:
var d = new Date();
d.getTime();
对于那些谁来到这里,确实使用日期类型的变量,这里是我找到了解决办法。但是它也适用于打字原稿。
我正面临此错误,因为我尝试使用以下的方法来比较两个日期
var res = dat1.getTime() > dat2.getTime(); // or any other comparison operator
然而Im肯定我使用的日期对象,因为进出口使用angularjs与打字稿,我从类型化的API调用获得的数据。
林不知道为什么引发错误,但我认为,因为我的目标是通过JSON deserialisation创建,可能是根本就没有加入到原型getTime()
方法。
解决方案
在这种情况下,重新创建基于您的日期将解决这个问题一个日期的对象。
var res = new Date(dat1).getTime() > new Date(dat2).getTime()
编辑:
我是对这个问题。类型将被强制转换为根据类型,但是他们不会被实例化。因此就会有一个串变成日期,这显然会导致运行时异常。
诀窍是,如果使用具有如日期或功能非原始只有数据接口,你将需要你的http请求之后执行的映射。
class Details {
description: string;
date: Date;
score: number;
approved: boolean;
constructor(data: any) {
Object.assign(this, data);
}
}
和执行映射:
public getDetails(id: number): Promise<Details> {
return this.http
.get<Details>(`${this.baseUrl}/api/details/${id}`)
.map(response => new Details(response.json()))
.toPromise();
}
有关阵列使用:
public getDetails(): Promise<Details[]> {
return this.http
.get<Details>(`${this.baseUrl}/api/details`)
.map(response => {
const array = JSON.parse(response.json()) as any[];
const details = array.map(data => new Details(data));
return details;
})
.toPromise();
}
有关信用及其它信息有关此主题按照链接
和DAT1 DAT2是字符串中的JavaScript。有对String原型没有的getTime功能。我相信你想要的Date.parse()函数: http://www.w3schools.com/jsref /jsref_parse.asp
您会使用这样的:
var date = Date.parse(dat1);