J'essaie de soustraire des journées dans le script Google Apps après la solution de ce message: Essayer de soustraire 5 jours à partir d'une Date - script d'application Google
Cependant, l'année ne déduit pas par 1 si nous minimes un jour du premier jour de l'année. Vous trouverez ci-dessous mon code: p>
p>
var StartDate = new Date(ResponceDetails[C3StartDate]); var StartYear = StartDate.getYear(); var StartMonth = StartDate.getMonth(); var StartDay = StartDate.getDate(); var tempEndDate = new Date(StartYear+1, StartMonth, StartDay); Logger.log(StartDate); Logger.log(tempEndDate); var EndDate = Utilities.formatDate(new Date(tempEndDate.getTime()-(24*3600*1000)),"GMT+8","MM/dd/YYYY"); Logger.log(EndDate);
3 Réponses :
a résolu mon problème! L'année, Yyyy doit être de petites lettres aaaa dans les utilitaires.FormatDate (...)
Le code mis à jour: p>
p>
var StartDate = new Date(ResponceDetails[C3StartDate]); var StartYear = StartDate.getYear(); var StartMonth = StartDate.getMonth(); var StartDay = StartDate.getDate(); var EndDate = Utilities.formatDate(new Date(StartYear+1, StartMonth, StartDay-1), "GMT+8", "MM/dd/yyyy");
La façon dont vous le définissez, c'est-à-dire une année, un mois et un jour, est le meilleur. Les faire un à la fois peut avoir des résultats inattendus. Toutefois, vous pouvez faire laisserdedate = nouvelle date (startdated.gedicalcyear () + 1, startdate.getmonth (), startdate.getdate () -1) code> Pour enregistrer quelques lignes de code. :-)
Merci pour le commentaire! A apporté le changement à mon code et fonctionne bien, cela aide à réduire certaines lignes de code.
Je préfère utiliser la méthode JS Vous pouvez ensuite ajouter / soustrayer du temps en millisecondes. P> GETTIME () CODE>. Il renvoie le nombre de millisecondes depuis le 1/1/1970.
function add_A_Day() {
var StartDate = new Date(ResponceDetails[C3StartDate]).getTime();
var EndDate = StartDate + 24 * 60 * 60 * 1000; // One day in milliseconds
EndDate = new Date(EndDate);
EndDate = Utilities.formatDate(EndDate, 'GMT+8', 'MM/dd/yyyy');
Logger.log(EndDate);
}
L'ajout de 8.64E7 millisecondes n'est pas un bon moyen d'ajouter 1 jour, car les jours ne sont pas 24 heures sur 24, où l'économie de jour est observée. Voir Comment puis-je ajouter 1 jour à la date actuelle? I> La façon dont l'OP est le faire, c'est beaucoup mieux.
function calcDate() { var date=new Date(); var dueDate=new Date(date.getFullYear()+1,date.getMonth(),date.getDate()-1); Logger.log(Utilities.formatDate(date, Session.getScriptTimeZone(), "yyyy/MM/dd")); Logger.log(Utilities.formatDate(dueDate, Session.getScriptTimeZone(), "yyyy/MM/dd")); var tomorrow=new Date(date.getFullYear(),date.getMonth(),date.getDate()+1); Logger.log(Utilities.formatDate(tomorrow, Session.getScriptTimeZone(), "yyyy/MM/dd")); }
Merci pour la réponse! Cela aide à réduire certaines lignes de code. Voudrais vérifier quelles sont les différences entre Capitale Yyyy et Yyyy représentant dans les utilitaires.FormatDate? J'ai également essayé MM / mm et DD / DD représentant tous les deux différents nombres
Merci, cela devrait signifier «Y», représentant une semaine de la semaine, j'étais confus auparavant ce qui est la semaine dernière était, mais je pense avoir le sens. Il incrémente le nombre d'année après 52 semaines par an, ce qui signifie généralement qu'il aura des différences au début et à la fin de chaque année comparer avec le numéro d'année habituel. Par exemple: epochconverter.com/weeks/2019 , 31Dec2018 pour ce calendrier est déjà devenu année 2019 Si nous définissons avec 'yyyy'
n'a pas essayé de startdate.gettime () + 364 * (24 * 3600 * 1000) pour éviter une vérification complexe des années de saut où il a 366 jours. Une meilleure solution est appréciée, merci!