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.parse()はミリ秒単位です。それを 1 日のミリ秒数で割ると、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 に答える
0

スプレッドシートで設定している値が Apps スクリプトの 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 に答える