मेरी स्प्रेडशीट में "7:00:00 AM" का समय मान है। हाइपोथेटिक रूप से, मैं अपने Google Apps स्क्रिप्ट कोड में इसकी तुलना किसी अन्य घंटे/मिनट के समय मान (तारीख अज्ञेयवादी) से करना चाहता हूं। जब स्क्रिप्ट मान पढ़ती है, क्योंकि कोई तारीख संलग्न नहीं थी, तो यह 30-दिसंबर-1899 की तारीख मानती है। अब, मुद्दा यह है, क्योंकि मैं वर्तमान में जिस समय क्षेत्र में हूं वह GMT+06:42 था: 04 वापस १८९९ में, समय मान "07:17:56" के रूप में प्रकट होता है।

मैं इस समय की तुलना दूसरे से कैसे कर सकता हूं ताकि पता चल सके कि घंटे और मिनट मेल खाते हैं या नहीं? यह आदर्श रूप से वैनिला 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
}

enter image description here

मेरी स्प्रैडशीट और स्क्रिप्ट दोनों "(GMT+07:00) बैंकॉक" समय क्षेत्र पर सेट हैं।

(मैं समझता हूं कि आज सुबह ७ बजे और १८९९ में सुबह ७ बजे समान नहीं थे, लेकिन यह इस काल्पनिक के लिए अप्रासंगिक है। यदि कोई उपयोगकर्ता स्प्रैडशीट में सुबह ७ बजे प्रवेश करता है, तो उनका मतलब शायद इस सदी में सुबह ७ बजे होना है।)

0
Diego 11 अप्रैल 2018, 20:19

1 उत्तर

सबसे बढ़िया उत्तर
  1. getDisplayValue(), getValue() नहीं
  2. मूल्य से एक नया दिनांक वस्तु बनाएँ
  3. घंटे और मिनट जानने के लिए 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
}
0
Diego 11 अप्रैल 2018, 20:47