Utilities.Formatdate 结果不变
Utilities.Formatdate result doesn't change
这让我抓狂,但一定要简单:-)
我在电子表格上有一个 Google 脚本 运行,我想输入一个包含当前日期的字符串(例如 "Produced at: 06 Oct 2016 @ 18:10")。
下面是我使用的测试代码和示例 Logger.log。
我的问题是 Utilities.Formatdate 的结果总是 returns 相同的值,而不管实际时间如何。
大家有什么想法吗?
TIA:-)
干杯
...史蒂夫
function TEST() {
var sheet = SpreadsheetApp.getActiveSheet();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var cell=sheet.getRange("A1");
Logger.log(new Date());
var nowdate = new Date();
Logger.log (nowdate);
var nowdatestr = ("Produced at: " +Utilities.formatDate(nowdate, "GMT+10", "dd MMM YYYY @ HH:MM"));
Logger.log (nowdatestr);
// cell.setValue(nowdatestr);
Logger.log (Utilities.formatDate(new Date(), "GMT+10", "dd MMM YYYY @ HH:MM"));
Logger.log (cell.getValues());
Logger.log(new Date());
}
记录结果:
[16-10-06 18:46:58:022 AEST] Thu Oct 06 18:46:58 GMT+10:00 2016
[16-10-06 18:46:58:022 AEST] Thu Oct 06 18:46:58 GMT+10:00 2016
[16-10-06 18:46:58:024 AEST] Produced at: 06 Oct 2016 @ 18:10
[16-10-06 18:46:58:024 AEST] 06 Oct 2016 @ 18:10
[16-10-06 18:46:58:081 AEST] [[Title]]
[16-10-06 18:46:58:082 AEST] Thu Oct 06 18:46:58 GMT+10:00 201
+++++++++++添加了 Vytautas 和 Ruben 的以下帖子。
@Vytautas:
您整理的版本省略了实际当前日期的日志,然后显示了我遇到的问题。
所以使用:
function TEST2() {
var sheet = SpreadsheetApp.getActiveSheet();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var cell=sheet.getRange("A1");
var nowdate = new Date()
var nowdatestr = ("Produced at: " + Utilities.formatDate(nowdate, 'GMT+10', 'dd MMM YYYY @ HH:MM'));
Logger.log (nowdatestr);
cell.setValue(nowdatestr);
Logger.log ("real new date and time is: " +new Date());
Logger.log (cell.getValues())
}
给出日志:
[16-10-07 12:31:57:265 AEST] Produced at: 07 Oct 2016 @ 12:10
[16-10-07 12:31:57:315 AEST] real new date and time is: Fri Oct 07 2016 12:31:57 GMT+1000 (AEST)
[16-10-07 12:31:57:448 AEST] [[Produced at: 07 Oct 2016 @ 12:10]]
@鲁本:
在每个新的 Date() 调用之前插入 Utilities.sleep(1000) 没有任何区别。
也许这并不像我最初想的那么简单...:-)
++++++++++++++++++
最终的工作测试代码(感谢 Ruben)是(将 HH:MM 更改为 HH:mm):
function TEST2() {
var sheet = SpreadsheetApp.getActiveSheet();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var cell=sheet.getRange("A1");
var nowdate = new Date()
var nowdatestr = ("Produced at: " + Utilities.formatDate(nowdate, 'GMT+10', 'dd MMM YYYY @ HH:mm'));
Logger.log (nowdatestr);
cell.setValue(nowdatestr);
Logger.log ("real new date and time is: " +new Date());
Logger.log (cell.getValues())
}
谢谢!
这段代码工作正常。清理它,这样我们就不会得到一堆不告诉我们任何信息的垃圾日志。
function TEST() {
var sheet = SpreadsheetApp.getActiveSheet();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var cell=sheet.getRange("A1");
var nowdate = new Date()
var nowdatestr = ("Produced at: " + Utilities.formatDate(nowdate, 'GMT+10', 'dd MMM YYYY @ HH:MM'));
Logger.log (nowdatestr);
cell.setValue(nowdatestr);
Logger.log (cell.getValues())
}
简答
而不是 HH:MM
使用 HH:mm
说明
根据http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html:
- M代表月
- m代表分钟。
例子
function myFunction() {
// General variables
var stringTimeZone = 'GMT-0500';
var stringFormat = 'dd MMM YYYY @ HH:mm'; // Use m for minutes, M for months
// Main code
var dateOne = new Date(); // First date instance
var stringOne = Utilities.formatDate(dateOne, stringTimeZone , stringFormat);
Logger.log(stringOne);
Utilities.sleep(1000*60); // Wait one minute in order to force different date-times
var dateTwo = new Date(); // Seconde date instance
var stringTwo = Utilities.formatDate(dateTwo, stringTimeZone, stringFormat);
Logger.log(stringTwo);
}
当我运行上面的脚本时,生成的日志如下:
[16-10-06 20:43:38:717 PDT] 06 Oct 2016 @ 22:43
[16-10-06 20:44:38:750 PDT] 06 Oct 2016 @ 22:44
这让我抓狂,但一定要简单:-)
我在电子表格上有一个 Google 脚本 运行,我想输入一个包含当前日期的字符串(例如 "Produced at: 06 Oct 2016 @ 18:10")。
下面是我使用的测试代码和示例 Logger.log。
我的问题是 Utilities.Formatdate 的结果总是 returns 相同的值,而不管实际时间如何。
大家有什么想法吗? TIA:-) 干杯 ...史蒂夫
function TEST() {
var sheet = SpreadsheetApp.getActiveSheet();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var cell=sheet.getRange("A1");
Logger.log(new Date());
var nowdate = new Date();
Logger.log (nowdate);
var nowdatestr = ("Produced at: " +Utilities.formatDate(nowdate, "GMT+10", "dd MMM YYYY @ HH:MM"));
Logger.log (nowdatestr);
// cell.setValue(nowdatestr);
Logger.log (Utilities.formatDate(new Date(), "GMT+10", "dd MMM YYYY @ HH:MM"));
Logger.log (cell.getValues());
Logger.log(new Date());
}
记录结果:
[16-10-06 18:46:58:022 AEST] Thu Oct 06 18:46:58 GMT+10:00 2016
[16-10-06 18:46:58:022 AEST] Thu Oct 06 18:46:58 GMT+10:00 2016
[16-10-06 18:46:58:024 AEST] Produced at: 06 Oct 2016 @ 18:10
[16-10-06 18:46:58:024 AEST] 06 Oct 2016 @ 18:10
[16-10-06 18:46:58:081 AEST] [[Title]]
[16-10-06 18:46:58:082 AEST] Thu Oct 06 18:46:58 GMT+10:00 201
+++++++++++添加了 Vytautas 和 Ruben 的以下帖子。
@Vytautas: 您整理的版本省略了实际当前日期的日志,然后显示了我遇到的问题。
所以使用:
function TEST2() {
var sheet = SpreadsheetApp.getActiveSheet();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var cell=sheet.getRange("A1");
var nowdate = new Date()
var nowdatestr = ("Produced at: " + Utilities.formatDate(nowdate, 'GMT+10', 'dd MMM YYYY @ HH:MM'));
Logger.log (nowdatestr);
cell.setValue(nowdatestr);
Logger.log ("real new date and time is: " +new Date());
Logger.log (cell.getValues())
}
给出日志:
[16-10-07 12:31:57:265 AEST] Produced at: 07 Oct 2016 @ 12:10
[16-10-07 12:31:57:315 AEST] real new date and time is: Fri Oct 07 2016 12:31:57 GMT+1000 (AEST)
[16-10-07 12:31:57:448 AEST] [[Produced at: 07 Oct 2016 @ 12:10]]
@鲁本: 在每个新的 Date() 调用之前插入 Utilities.sleep(1000) 没有任何区别。
也许这并不像我最初想的那么简单...:-)
++++++++++++++++++
最终的工作测试代码(感谢 Ruben)是(将 HH:MM 更改为 HH:mm):
function TEST2() {
var sheet = SpreadsheetApp.getActiveSheet();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var cell=sheet.getRange("A1");
var nowdate = new Date()
var nowdatestr = ("Produced at: " + Utilities.formatDate(nowdate, 'GMT+10', 'dd MMM YYYY @ HH:mm'));
Logger.log (nowdatestr);
cell.setValue(nowdatestr);
Logger.log ("real new date and time is: " +new Date());
Logger.log (cell.getValues())
}
谢谢!
这段代码工作正常。清理它,这样我们就不会得到一堆不告诉我们任何信息的垃圾日志。
function TEST() {
var sheet = SpreadsheetApp.getActiveSheet();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var cell=sheet.getRange("A1");
var nowdate = new Date()
var nowdatestr = ("Produced at: " + Utilities.formatDate(nowdate, 'GMT+10', 'dd MMM YYYY @ HH:MM'));
Logger.log (nowdatestr);
cell.setValue(nowdatestr);
Logger.log (cell.getValues())
}
简答
而不是 HH:MM
使用 HH:mm
说明
根据http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html:
- M代表月
- m代表分钟。
例子
function myFunction() {
// General variables
var stringTimeZone = 'GMT-0500';
var stringFormat = 'dd MMM YYYY @ HH:mm'; // Use m for minutes, M for months
// Main code
var dateOne = new Date(); // First date instance
var stringOne = Utilities.formatDate(dateOne, stringTimeZone , stringFormat);
Logger.log(stringOne);
Utilities.sleep(1000*60); // Wait one minute in order to force different date-times
var dateTwo = new Date(); // Seconde date instance
var stringTwo = Utilities.formatDate(dateTwo, stringTimeZone, stringFormat);
Logger.log(stringTwo);
}
当我运行上面的脚本时,生成的日志如下:
[16-10-06 20:43:38:717 PDT] 06 Oct 2016 @ 22:43
[16-10-06 20:44:38:750 PDT] 06 Oct 2016 @ 22:44