[英]Getting next day date for specific string format in Google Apps Script (JavaScript)
今天是个好日子! 我必须开始使用Google Spereadsheet界面,但是由于从未使用过JavaScript,因此我无法快速解决这个问题。 我有一个特定格式的日期作为字符串
var date = "2012-08-09";
我需要的是获取第二天的日期
date = "2012-08-10";
如果需要,其中不仅应包括更改日期,还应包括更改月份和年份。
我尝试使用日期格式
var datum= new Date(date);
datum.setDate(datum.getDate() + 1);
date = datum.toString('yyyy-MM-dd');
但是代码似乎在将日期写入基准变量时失败。 解决这一小问题的最好,最快的方法是什么?
谢谢
标记问题“ Javascript”时以及实际使用Google Apps Script时,问题在于您会从不了解GAS中某些特殊功能的人员那里得到很好的答案。
GAS基于Javascript,但Javascript不是GAS ... 如果您明白我的意思;-)
也就是说,实际上有一个“特殊”函数可以格式化日期字符串 ,我将在下面的代码中显示它。
但是,还有另一点可能会给您带来麻烦:如果您在约会对象中未提及小时数,那么如果您居住在使用夏令时的国家,则有可能转移一天的时间。 这个问题在该论坛和其他地方已经讨论过很多,因此我不会给出所有详细信息,但是在处理日期对象时考虑这一点是一个好主意。 在下面的代码中,我从刚创建的日期对象中提取了一个tz
(时区)字符串,以了解它是在夏季还是在冬季,然后将此tz
字符串用作Utilities.formatDate()
方法中的参数。 这保证了在每种情况下的准确结果。
(最终)这是测试代码:( 使用记录器查看结果。脚本编辑器>视图>日志)
function test(){
date = "2012-08-9";
var parts = date.split('-')
var datum = new Date(parts[0],parts[1]-1,parts[2],0,0,0,0);// set hours, min, sec & milliSec to 0
var tz = new Date(datum).toString().substr(25,8);// get the tz string
Logger.log(datum+' in TimeZone '+tz)
datum.setDate(datum.getDate() + 1);// add 1 day
var dateString = Utilities.formatDate(datum,tz,'yyyy-MMM-dd');// show result like you want, see doc for details
Logger.log(dateString);// the day after !
}
记录仪结果:
Thu Aug 09 2012 00:00:00 GMT+0200 (CEST) in TimeZone GMT+0200
2012-Aug-10
这听起来像是一个解析问题,您可能会比较幸运,将日期分开并单独放入参数,则遇到的任何错误将非常有用:-
var parts = date.split("-");
var datum = new Date(
parseInt(parts[0], 10),
parseInt(parts[1], 10) - 1,
parseInt(parts[2], 10));
JavaScript Date对象没有内置的格式化功能,但是我不确定google apps api是否有所不同。 要执行代码的最后一行,您可能需要编写自己的函数以从JavaScript日期对象中提取数据并对其进行格式化,如果您要确保日期中的两位数,则提示您还需要编写一个Zerofill函数。和输出的月份部分。
var formatted = datum.getFullYear() + "-" +
zerofill(datum.getMonth() + 1, 2) + "-" +
zerofill(datum.getDate(), 2);
将格式字符串传递给toString在.NET中可用,并且可能在Java中起作用,但是在Javascript中不起作用。 尝试以下方法
var date = "2012-08-09";
var datum = new Date(date);
datum.setDate(datum.getDate() + 1);
date = datum.getFullYear() + "-" + (datum.getMonth() + 1) + "-" + datum.getDate();
在http://jsfiddle.net/中尝试以下操作。.....
<html>
<head>
<script>
function foo(){
var date = "2012-08-09";
var datum = new Date(date);
datum.setDate(datum.getDate() + 1);
date = datum.getFullYear() + "-" + (datum.getMonth() + 1) + "-" + datum.getDate();
document.getElementById("demo").innerHTML = date;
}
</script>
</head>
<body onload="foo()">
<p id=demo></p>
</body>
</html>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.