我有一个PHP脚本,可在Google表格中记录时间戳。当我尝试查看此时间戳是否介于我手动输入到同一工作表的其他两个时间戳之间时,我发现了一些奇怪的行为。我认为可能是因为Google在单元格中字符串的开头添加了',所以我尝试执行substr来删除撇号。
function weirdDate(dateFromPhp) {
var dateSubStr = new Date(dateFromPhp.substr(1));
var dateDefault = new Date(dateFromPhp);
return "dateFromPhp: " + dateFromPhp + " dateSubStr: " + dateSubStr + " dateDefault: " + dateDefault;
}
输出为:dateFromPhp:16/01/2020 08:33:45dateSubStr:2020年6月1日星期一08:33:45 GMT + 1000(AEST)dateDefault:Thu Apr 01 2021 08:33:45 GMT + 1100(AEDT)
我不知道为什么这些日期比预期的日期和时间间隔数月或数年。没有substr的操作对我来说是正确的时区。
任何想法,我怎样才能使此字符串成为带有正确日期的时间戳?
我找到了答案。我不知道javascript期望mm / dd / yyyy作为日期格式的顺序。
function weirdDate(dateFromPhp) {
var dateSubStr = new Date(dateFromPhp.substr(1));
var dateDefault = new Date(dateFromPhp);
var dateUs = americanizeDate(dateFromPhp);
return "dateFromPhp: " + dateFromPhp + " dateSubStr: " + dateSubStr + " dateDefault: " + dateDefault + " dateUS: " + dateUs;
}
function americanizeDate(ausDate) {
var dateParts = ausDate.split("/");
// month is 0-based, that's why we need dataParts[1] - 1
var usDate = new Date(dateParts[1]+"/"+dateParts[0]+"/"+ dateParts[2]);
return usDate;
}
切换月份和日期解决了问题。