在同一个SpreadSheet中的各个时区上插入日期

时间:2016-11-24 09:20:17

标签: google-apps-script google-sheets timezone timezone-offset

我需要在同一个电子表格上记录来自世界各地的费用(能够在当地时间在东非写一个日期,在当地时间在迪拜,在泰国写一个日期......)

因此,在所有其他数据中,我需要记录:

  1. 交易发生的日期和时间(我将商店收据上的日期,时间和金额复制)和时区发生在
  2. 罗马时区的日期和时间,这是我的居住地时区,因此是银行帐户的时区
  3. 记录交易的日期和时间(当地时区的时间戳,即我旅行时所在地的时区)
  4. 我在1和3处执行操作的位置可能不同,例如,我可能位于泰国,并且想要记录我在美国制作的费用(并转换为在罗马的时间,这是一个永远存在)。

    1. 我使用"数据验证..."将A列设置为日期。在那里,我从弹出日历手动输入交易拣选日期,我手动添加时间(根据收据)。在下一栏中,我手动设置了进行交易时的时区。 我想在交易日期列中记录当我在本地显示时显示的日期。所以我想得到该列的日期以及包含时区的下一列。但如果我做了transcationDateCell.getValue()我得到" 2016年11月22日18:59:51 + 0100"哪些已包含时区(脚本运行时的时区或电子表格设置中的时区?) 所以我不能使用手动设置的时区。

    2. 我用过:

      var tsTransDateRome = Utilities.formatDate(new Date(tsTransDateValue), "Europe/Rome", dateFormatString); 
      

      其中tsTransDateValue包含从电子表格用户界面手动设置的第1点日期。

    3. 我应该对此感到满意。它通过GAS自动填写。我用过:

      var timeZoneScript = Session.getScriptTimeZone(); // Check if when I travel to a different TimeZone it will adjust or if the ScriptTimezone keeps being the one when the SpreadSheet was created (File->Spreadsheet Settings)
      var tsTimeZoneRecCell = transSheet.getRange(tsActiveRowIdx, tsTimeZoneRecColIdx);
      

      我推测,如果我移动到不同的时区,我的Session.getScriptTimeZone()将调整为当地时区(即它不是通过电子表格设置设置的电子表格的时区......)? / p>

    4. 现在我在意大利,所以所有地点都一样。当我从1计算2.它只显示正确的时间,如果费用是在同一时区(中欧时间),因为当我选择日期并添加它在当前时区写的时间。

      如果我想编写费用,包括在下一栏中手动设置的时区,我该怎么办?

      我能否正确解决问题?

0 个答案:

没有答案