2

我在 Google 电子表格中有一些日期,我将它们引入到这样的脚本中:

  var JCstartDateFix = Math.floor(Date.parse(JCstartDate) / 86400000) + 25570;
  var todaysDateFix = Math.floor(Date.parse(todaysDate) / 86400000) + 25570;

如何在脚本末尾执行与此相反的操作以将其更改回 mm/dd/yyyy 格式的日期?

提前感谢您对此的任何帮助。

这是整个脚本:

function projectedDate(JCstartDate, overallPercent, pace, todaysDate, HSstartDate, DaysInHS) {

//converts dates to a number of days
var JCstartDateFix = Math.floor(Date.parse(JCstartDate) / 86400000) + 25570;
var todaysDateFix = Math.floor(Date.parse(todaysDate) / 86400000) + 25570;


//This says that there's no projected date since the student hasn't started high school yet
if(HSstartDate == ""){
  return "HS not started";
}

 //This calculates grad date if the student's been here more than 8 months or if their percent is over 80.
else if(DaysInHS >= 200 || overallPercent >=80){ 
    var percentPerDay = overallPercent/(DaysInHS);
    var daysLeft = (100 - overallPercent) / percentPerDay;

    if((todaysDateFix + daysLeft) > (JCstartDateFix +730)){
      return "You are not on track to complete.";
    }
    else{
      return (todaysDateFix + daysLeft);
    }
  }

 //This calculates grad date if the student's been at JC less than 8 months  
 else{
 if(JCstartDateFix + 600 - pace > JCstartDateFix + 730){
          return "You are not on track to complete.";
       }
      else{
          return (JCstartDateFix+600-pace);
  }

 }
}

我在一所学校工作,那里的学生从不同的时间开始,并按照自己的节奏工作。他们有 2 年的时间来完成。所以这个脚本根据他们开始的时间和他们的进度来估计他们的毕业日期。它使用不同的公式,具体取决于他们在这里的时间。我对电子表格上的日期感到满意,但如果我从电子表格中格式化它们,另一个脚本无法正确提取文本字符串并给出 1969 年的日期。

我认为我需要做的是更改返回数字的行,以便将这些数字格式化为日期。我只是不知道怎么做。再次感谢!

4

2 回答 2

0

只要您在电子表格中设置的值是应用程序脚本中的 Date 对象,它就会显示为日期。当然,格式将受电子表格的控制,但默认为 mm/dd/yyyy。

例如,您可以只更改现有代码以呈现Date对象。然后,当您打电话时,setValue()您会将日期写入电子表格。

var JCstartDateFix = new Date(Math.floor((Date.parse(JCstartDate) / 86400000) + 25570)*86400000); 
var todaysDateFix = new Date(Math.floor((Date.parse(todaysDate) / 86400000) + 25570)*86400000);
于 2013-01-23T17:49:37.423 回答
0

你得到的值Date.parse()是以毫秒为单位的,你将它除以一天中的毫秒数,所以我猜你得到了自 JS 参考日期以来的天数,四舍五入到最小整数,然后加上一个常数值 25570。
什么结果应该是?

似乎它应该是从参考日期开始的几天,但那是相当遥远的未来!(约 70 岁)这是对的吗?你能澄清一下吗?

无论如何,您应该做的是再次获取以毫秒为单位的值并用于new Date(value in mSec)获取日期对象。从那里Utilities.formatDate将允许您获得所需的任何显示格式。

参考:http ://www.w3schools.com/jsref/jsref_obj_date.asp

https://developers.google.com/apps-script/class_utilities#formatDate

于 2013-01-23T17:58:16.993 回答