0

我有一个电子表格,我们用它来记录我们的工作。我已将工作表中的日期列读入一个数组,以便我可以对它们执行操作/计算。这对我不起作用,因为我在调试器中注意到保存日期的数组具有不同格式的日期值。例如,有些显示为“16/11/2012”,有些显示为 ( new Date(1355184000000))。

有人可以指出将它们全部转换为统一格式以便我可以使用它们的方法吗?

谢谢

4

1 回答 1

1

您希望如何显示您的日期?您希望它们成为“日期对象”还是字符串?您在代码中显示的值(新日期(1355184000000))对应于Mon Dec 10 16:00:00 PST 2012 您可以使用Logger.log(new Date(1355184000000))

相反"16/11/2012",很可能不是日期而是字符串... (注意:奇怪的是,您使用“日/月/年”序列,因为我在您的个人资料中看到您在英国,我以为您会使用 mm/ dd/yyyy 代替)

既然您说您需要对这些项目进行一些计算,我想它们都应该转换为日期对象以便在您的脚本中使用它们。我建议您查看有关日期对象的一些文档,以确切了解如何在不产生错误的情况下完成此操作。不要忘记 javascript 中的日期总是以 hh:mm:ss 和毫秒为单位的日期和时间。您看到的整数值是自 1970 年 1 月以来的毫秒数;-)
您还可以在此论坛中搜索日期并找到很多有趣的信息。

这是一个小功能来说明:

function playWithTime(){
Logger.log('ref date = '+new Date(0))
var example = "june 30, 2013 23:59:00"
Logger.log(example+' = '+ new Date("june 30, 2013 23:59:00"))
Logger.log(example+' = '+ new Date("june 30, 2013 23:59:00").getTime()+' mS')
}

它将在 Logger 中显示:

ref date = Thu Jan 01 1970 01:00:00 GMT+0100 (CET)
june 30, 2013 23:59:00 = Sun Jun 30 2013 23:59:00 GMT+0200 (CEST)
june 30, 2013 23:59:00 = 1372629540000 mS

顺便说一句,请注意,记录器以不同的方式返回值,具体取决于您所在时区的夏令时......我在比利时,六月是“夏季”时间(CEST)。它也可以显示在 PDT 或 PST 中,这是 Google 服务器的时区。您不能依赖记录器保持不变(!!),但这是另一回事;-)


编辑:如果您的日期字符串采用 dd/mm/yyyy 的形式,那么您可能应该像以下代码一样重新排序:

function playWithTime2(){
Logger.log('original date string in UK format = 16/11/2012')
var d = "16/11/2012".split('/');
var d_ordered=d[1]+'/'+d[0]+'/'+d[2]
Logger.log('becomes '+d_ordered+' = '+new Date(d_ordered))
}

哪个返回

original date string in UK format = 16/11/2012
becomes 11/16/2012 = Fri Nov 16 2012 00:00:00 GMT+0100 (CET)
于 2012-11-17T13:55:34.003 回答