【问题标题】:How to conditionally change a date based on a time? Time zone differences?如何根据时间有条件地更改日期?时区差异?
【发布时间】:2022-10-23 03:17:34
【问题描述】:

我正在使用两个函数从字符串中提取日期和时间:

DATA!A2 中的原始字符串:2022/3/6 4:52:33

=LEFT(DATA!$A$2,FIND("T",DATA!$A$2)-1) 将字符串重新格式化为日期:

结果:2022-03-06

在另一个单元格中,我正在提取时间并将其转换为美国 CT 时间: =MID(DATA!$A$2,12,5)-"6:00"

结果:晚上 10:52


问题:

我已成功减去 6 小时将此时间转换为 CT,但现在只要时间在 CT 下午 6 点或之后,日期 (2022-03-06) 就会提前到第二天。在上面的示例中,因为晚上 10:52 是在下午 6 点之后,所以日期应该显示为 2022-03-05。

有什么方法可以检查时间是否在下午 6 点之后,如果为真,则将日期更正 -1 天?

【问题讨论】:

    标签: google-sheets google-sheets-formula


    【解决方案1】:

    一个-

    尝试,无需任何脚本

    =value(left(A1,10))+value(mid(A1,12,12))
    

    乙-

    如果要减去 6 小时,请尝试

    =value(left(A1,10))+value(mid(A1,12,12))-6/24
    

    如果有的话,您将更改日期

    C-

    但是,要解决该问题I have successfully subtracted 6 hours to convert this time to CT, but now whenever the time is on or after 6 PM CT, the date (2022-03-06) prematurely advances to the next day.

    1-检查电子表格的时区

    2-以及您的脚本编辑器的时区。

    要在脚本编辑器中执行此操作,请检查参数

    • 点击左侧的齿轮)并检查第三个参数
    • 返回脚本
    • 修改appscript.json 中的时区并确保它与您的电子表格相同(例如Europe/paris

    【讨论】:

    • 谢谢!这两个答案都是一个解决方案,但如果可以使用正确的公式来完成,我宁愿不必使用脚本。 Genius 致力于以这种“日期时间”格式减去 6 小时……这是非常需要的,而不是将字段分开。正如@ale13 建议的那样,我之后还将日期和时间分成两个单独的字段。谢谢迈克!
    【解决方案2】:

    由于 Google 表格不会将原始字符串识别为日期,因此最好的选择实际上是创建一个自定义函数,将字符串转换为日期。这样,执行您想要的日期操作会更容易。


    为此,您必须前往扩展>应用程序脚本并为here 中的自定义函数使用以下代码:

    /**
     * Converts a string to a date-time value
     * @customfunction
     */
    function DATETIME(dateTimeString) {
      var output = new Date (dateTimeString);
      if(!isNaN(output.valueOf())) {
        return output;
      } else {
        throw new Error('Not a valid date-time');
      }   
    }
    

    保存项目,运行它,授权脚本并返回工作表。

    之后,在您的工作表中,调用 DATETIME 函数,就像使用已经存在的 Sheets 函数一样,并使用 TIME 函数减去小时数:

    =(DATETIME(A2)-TIME(7,0,0))
    

    假设您的工作表如下所示,生成的列将如下所示:

    如果您还想将日期与时间分开,则必须再添加两个公式(假设 D1 包含来自 DATETIME 自定义函数的结果):

    • 用于检索日期:
    =LEFT(D1,FIND(" ",D1)-1) 
    
    • 用于检索时间:
    =RIGHT(D1,LEN(D1)-FIND(" ",D1))
    

    在所有公式之后,工作表将如下所示:

    参考

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-16
      • 2019-08-24
      • 2022-11-15
      • 1970-01-01
      相关资源
      最近更新 更多