如何在单元格中输入从特定日期起经过的天数。例如:
列1: 12/05/2013 18:00:00使用函数New Date()的实际天数列2:脚本将插入天数(今天-列1)=4
脚本应在第2列中插入从今天起经过的天数。今天是2013年5月16日23:00,脚本将插入4。如果可能的话,原因是什么?
如果你能帮我,我将不胜感激。
该函数是由friend传递的,但我认为不起作用,因为日期不是以毫秒为单位的,但单元格中的结果应该是天数
}
function formatting2(event) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // get the sheet
var columnF = sheet.getRange(2, 1, sheet.getLastRow()-1, 1);
var updateage = sheet.getRange(2, 2, sheet.getLastRow()-1, 1);
var fValues = columnF.getValues(); // get the values
var result = new Date();
updateage.setValue(result-fValues)
}
这是获得所需结果的一种可能方法,我将其作为自定义函数编写,即您必须将其放入单元格中,以便它以=dayToToday()
下面是脚本,其中包含一些日志和注释,用于显示中间值。
function dayToToday(x){
var sh = SpreadsheetApp.getActiveSheet();
Logger.log(sh.getActiveCell().getRowIndex())
var refcell = sh.getRange(sh.getActiveCell().getRowIndex(),1).getValue();;// get value in column A to get the reference date
var refTime = new Date(refcell);
var ref = refTime.setHours(0,0,0,0)/(24*3600000);// set hours, minutes, seconds and milliseconds to 0 if necessary and get number of days
var today = new Date();
var TD = today.setHours(0,0,0,0)/(24*3600000);// set hours, minutes, seconds and milliseconds to 0 if necessary and get number of days
var day = parseInt(TD-ref);// get the difference in days (integer value )
return day ; // return result that will be in cell
}
编辑:如果我理解你的用例,我建议你放弃自定义函数aproach(我从来没有使用过,因为我不太喜欢它),转而使用这个解决方案,它使用计时器触发器和/或菜单来批量更新电子表格中的值...
(ps:抱歉没有足够快的答案...这些天太忙了:-)
function onOpen() {
var menuEntries = [ {name: "test function", functionName: "toTrigger"},
];
var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.addMenu("test menu",menuEntries);//
}
// create a timer trigger that will call "toTrigger" every 15 minutes
function toTrigger(){
var sh = SpreadsheetApp.getActiveSheet();
var data = sh.getRange(1,1,sh.getLastRow(),2).getValues();
for(var n=0;n<data.length;++n){
if(typeof(data[n][0])=='object'){
data[n][1]=dayToToday(data[n][0])
}
}
sh.getRange(1,1,sh.getLastRow(),2).setValues(data)
}
function dayToToday(x){
var refcell = x;;// get value in column A to get the reference date
var refTime = new Date(refcell);
var ref = refTime.setHours(0,0,0,0)/(24*3600000);// set hours, minutes, seconds and milliseconds to 0 if necessary and get number of days
var today = new Date();
var TD = today.setHours(0,0,0,0)/(24*3600000);// set hours, minutes, seconds and milliseconds to 0 if necessary and get number of days
var day = parseInt(TD-ref);// get the difference in days (integer value )
return day ; // return result that will be in cell
}
第二次编辑:
当使用var data=sh.getRange(1,1,sh.getLastRow(),2). getVales();
getRange中的数字是起始行、起始列、行数、列数,因此必须设置一个包含所需列的范围,然后使用data[n][columnNumber-1]获取相应的值。(-1,因为数组从0开始,列从1开始计数(A实际上是第一列;-))如果需要变量引用,请告诉我,因为必须修改函数以接受2个变量(A ref和另一个)。
最后一次编辑(我希望)
我改变了一些细节。。。参见与J和F对应的[9]和[5]索引
function toTrigger(){
var sh = SpreadsheetApp.getActiveSheet();
var data = sh.getRange(1,1,sh.getLastRow(),sh.getLastColumn()).getValues();
for(var n=0;n<data.length;++n){
if(typeof(data[n][9])=='object'){
data[n][5]=dayToToday(data[n][9])
}
}
sh.getRange(1,1,data.length,data[0].length).setValues(data)
}
更新/编辑
以小时为单位得出结果(根据评论中的请求)
function hoursToToday(x){
var refcell = x;;// get value in column A to get the reference date
var refTime = new Date(refcell);
var refhrs = refTime.getHours();
var ref = refTime.setHours(refhrs,0,0,0)/3600000;// set hours, minutes, seconds and milliseconds to 0 if necessary and get number of days
var today = new Date();
var todayHrs = today.getHours()
var TD = today.setHours(todayHrs,0,0,0)/3600000;// set hours, minutes, seconds and milliseconds to 0 if necessary and get number of days
var hrs = TD-ref;// get the difference in days (integer value )
return hrs ; // return result that will be in cell
}
问题内容: 我想要一个Java程序来计算两个日期之间的天数。 键入第一个日期(德语表示法;带空格:“ dd mm yyyy”) 输入第二个日期。 该程序应计算两个日期之间的天数。 如何包含include年和夏季? 我的代码: 问题答案: 你正在使用你的字符串进行一些不必要的转换。有一个SimpleDateFormat类-试试这个: 编辑:既然有一些关于此代码的正确性的讨论:它确实照顾care年。但
防止日期保存时间出错 输入是两个对象(没有时间,我知道,但我需要使用实例来实现这一点)
我需要计算JPA中2个日期之间的天数。 例如: 到目前为止,我试着: 你会怎么做?
我想要一个计算两个日期之间天数的Java程序。 键入第一个日期(德语表示法;带空格:“dd-mm-yyyy”) 我如何包括闰年和夏季? 我的代码:
我试图计算两个日期之间的天数,如下所示: 获取当前日期 我尝试了不同的方法,但不能得到我想要的结果上面。我发现Android DatePicker对话框将日期转换为整数。我还没有找到一种方法让DatePicket小部件返回日期变量而不是整数。 我试图将系统日期转换为整数,基于上述,但这并不真正工作时,试图计算日期之间的2天。