我的时间价值是"早上7:00:00"在我的电子表格中。假设我想在我的Google Apps脚本代码中将其与另一小时/分钟时间值(与日期无关)进行比较。当脚本读取值时,由于没有附加日期,因此它假定日期为18-Dec-1899。现在,问题是,因为我当前的时区是GMT+06:42:04 back in 1899,时间值显示为" 07:17:56"。
如何将此时间与其他时间进行比较以了解小时和分钟是否匹配?理想情况下,这可以使用vanilla JS(即我不想使用Moment.js)。
function getCellValue() {
var cellValue = SpreadsheetApp.getActiveSheet().getRange("A1").getValue();
Logger.log(cellValue); // Sat Dec 30 07:00:00 GMT+06:42 1899
Logger.log(cellValue.getHours()); // 7.0
Logger.log(cellValue.getMinutes()); // 17.0
Logger.log("Untouched: " + cellValue); // Untouched: Sat Dec 30 1899 07:17:56 GMT+0700 (ICT)
var formattedTime = Utilities.formatDate(cellValue, "GMT+7", "EEE MMM dd yyyy HH:mm z");
Logger.log("Formatted: " + formattedTime); // Formatted: Sat Dec 30 1899 07:17 GMT+07:00
var updatedCellValue = new Date(cellValue.setFullYear(2018));
Logger.log("New Year: " + updatedCellValue); // New Year: Sun Dec 30 2018 07:17:56 GMT+0700 (ICT)
var updatedDate = new Date(cellValue);
Logger.log("Converted: " + updatedDate); // Converted: Sat Dec 30 1899 07:17:56 GMT+0700 (ICT)
Logger.log("Converted & formatted: " + Utilities.formatDate(updatedDate, "GMT+7", "EEE MMM dd yyyy HH:mm z")); // Converted & formatted: Sat Dec 30 1899 07:17 GMT+07:00
}
我的电子表格和脚本都设置为"(GMT + 07:00)曼谷"时区。
(据我所知,今天上午7点和1899年上午7点不一样,但这与这个假设无关。如果用户在电子表格中输入早上7点,他们可能意味着本世纪早上7点。)
答案 0 :(得分:0)
getDisplayValue()
,而不是getValue()
Utilities.formatDate()
获取小时和时间分钟固定代码:
function getCellValue() {
var cellValue = SpreadsheetApp.getActiveSheet().getRange("A1").getDisplayValue();
Logger.log(cellValue); // 7:00:00 AM (or 0.29, if formatted as number)
cellValue = new Date(cellValue);
var hours = Utilities.formatDate(cellValue, "GMT+7", "HH");
var minutes = Utilities.formatDate(cellValue, "GMT+7", "mm");
Logger.log (hours + ":" + minutes); // 07:00
}