2013-02-13 79 views
0

我正在使用脚本创建使用电子表格中键入的信息创建日历事件,其中我在两个单元格中具有开始和结束时间。然而,当我试图让开始/结束时间的事件,价值观得到2'20"区别(我得到的值是Google脚本在使用时间值时丢失了精度

Sat Dec 30 1899 18:57:40 GMT-0430 (VEST) 

但单元格的值是19时00分00秒)。

  • 有没有办法修复这个2'20“偏移量?这是一个错误?我看到的差异是“VEST”时间而不是“VET”(委内瑞拉标准时间)值。
  • 在情况下,它是一个错误,就是它始终是相同的时间差(2'20" )?我的话,我可以修复,通过添加这些秒钟,该日期的偏移量。提前为

谢谢你的帮助。

回答

0

的问题是不是你认为它是...

没有“小时”值在JavaScript中也没有“日期”值,约会对象总是在一天一个完整的日期,月份,年份,小时,分钟,秒和毫秒,无论您如何选择可视化它。

您显示的值来自记录器,该记录器始终显示完整的日期对象,并且由于您的值未定义有效日期,因此它认为它是0,即电子表格的参考日。要检查只在电子表格单元格中键入0并强制数字格式为日期,您将获得30/12/1899 00:00:00

这给了你一个答案的一部分,因为它解释了为什么......现在回答你的问题和提供一个答案有几种可能的方式来解决这个问题。

最简单的一种是你的2个细胞在一个以电子表格的水平创造中,你用一个简单的公式第三个单元格合并:

考虑到你有A1日期和时间在B1,创建公式C1 =A1+B1

这很容易,但你可能不愿意有一个额外的细胞......你可以最终使用一个隐藏的单元,(简单)添加并让你的脚本读取该单元而不是其他2个单元。 ..

另一种可能性我为了在剧本中增加这些内容,这里有一个脚本,其中一步一步的过程要尽可能清晰。

function myFunction() { 
    var sh = SpreadsheetApp.getActive(); 
    var day = new Date(sh.getRange('A1').getValue()); 
    var time = new Date(sh.getRange('B1').getValue()); 
    var hour = time.getHours(); 
    var min = time.getMinutes(); 
Logger.log(day+' + '+time+' '+hour+':'+min+' = '+ new Date(day.setHours(hour,min,0,0))); 
} 

结果在记录器:(比利时时间)

[13-06-21 17:16:19:071 CEST] Fri Dec 27 2013 00:00:00 GMT+0100 (CET) + Sat Dec 30 1899 20:30:00 GMT+0100 (CET) 20:30 = Fri Dec 27 2013 20:30:00 GMT+0100 (CET)