regex 根据某项内容发布的时间计算周数、月份和年份

9o685dep  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(114)

YouTube等社交媒体平台不会显示视频发布的时间。相反,它们显示了视频发布的时间,这使得确定日期变得特别棘手。
我有一个基于inpnut日期计算周数(B)的公式,inpnut日期是postDate列(G)的相对值。

预期结果:

  • (1)虽然这是工作大部分罚款,我似乎找不到一种方法,使11个月的回报“"。它返回从输入日起4周,这是不正确的。
  • (2)同样的事情发生在岁月里。当post日期包含1时,它将产生1年而不是预期结果(在11年的情况下为2012年)。如果发生精确匹配,则无论是哪个数字,公式都应该产生结果。

这可能不是计算月、年和周数的最有效方法。此外,这个解决方案不是一个可持续的解决方案,因为每次向工作表添加新数据时,它都需要更改,因此生成此输入的任何替代方案都非常有用。

这是我正在使用的工作表的链接。
下面是我的公式:

=IF(REGEXMATCH(N11, "(\d+)days"), 0,
  IF(REGEXMATCH(N11, "(\d+)'minutes'"), 0,
   IF(REGEXMATCH(N11, "(\d+)hours"), 0,
 IF(REGEXMATCH(N11, "1 day"), 0,
 IF(REGEXMATCH(N11, "2 days"), 0,
 IF(REGEXMATCH(N11, "3 days"), 0,
 IF(REGEXMATCH(N11, "4 days"), 0,
 IF(REGEXMATCH(N11, "5 days"), 0,
 IF(REGEXMATCH(N11, "6 days"), 0,
 IF(REGEXMATCH(N11, "7 days"), 0,
 IF(REGEXMATCH(N11, "8 days"), 1,
 IF(REGEXMATCH(N11, "9 days"), 1,
 IF(REGEXMATCH(N11, "10 days"), 1,
 IF(REGEXMATCH(N11, "1 week"), 1,
 IF(REGEXMATCH(N11, "2 weeks"), 2,
 IF(REGEXMATCH(N11, "3 weeks"), 3,
 IF(REGEXMATCH(N11, "4 weeks"), 4,
    IF(REGEXMATCH(N11, "1 month"), 4,
     IF(REGEXMATCH(N11, "2 months"), 8,
      IF(REGEXMATCH(N11, "3 months"), 12,
       IF(REGEXMATCH(N11, "4 months"), 16,
        IF(REGEXMATCH(N11, "5 months"), 20,
         IF(REGEXMATCH(N11, "6 months"), "",
          IF(REGEXMATCH(N11, "7 months"), "",
           IF(REGEXMATCH(N11, "8 months"), "",
            IF(REGEXMATCH(N11, "9 months"), "",
             IF(REGEXMATCH(N11, "10 months"), "",
              IF(REGEXMATCH(N11, "'11' months"), "",
               IF(REGEXMATCH(N11, "1 year"), "",
                IF(REGEXMATCH(N11, "2 years"), "",
                 IF(REGEXMATCH(N11, "3 years"), "",
                  IF(REGEXMATCH(N11, "4 years"), "",
                   IF(REGEXMATCH(N11, "5 years"), "",
                    IF(REGEXMATCH(N11, "6 years"), "",
                     IF(REGEXMATCH(N11, "7 years"), "",
                      IF(REGEXMATCH(N11, "8 years"), "",
                       IF(REGEXMATCH(N11, "9 years"), "",
                        IF(REGEXMATCH(N11, "10 years"), "",
                         IF(REGEXMATCH(N11, "11 years"), "",
                          WEEK(B113, 2) - WEEK(DATE(YEAR(B113),1,1), 2) + 1)))))))))))))))))))))))))
))))))))))))))
mbzjlibv

mbzjlibv1#

你根本不需要正则表达式,你可以在Google表单中使用日期进行计算:

  • A1包含日期差异,例如“两个月”
  • B1包含以下公式:=find(" ";A1)-查找数字和单位(日/月/年)之间的分割空间
  • C1包含该式:=left(A1;B1-1)-它从差值中获取数字,我将其放入一个单独的字段中,因为它被多次使用
  • D1包含该式:=lower(mid(A1;B1+1;1))-它从单元中获取第一个字母并将其转换为小写。该值随后也会多次使用
  • E1含有主式:=now()-date(if(D1="y";C1;0);if(D1="m";C1;0)+1;if(D1="d";C1;0)-1)-从当前日期中减去年/月/日数。您必须将此单元格显式地格式化为日期(菜单格式->数字->日期),以便以人类可读的形式查看结果。

主公式首先将差值转换为日期,并对月数和天数进行调整。
将计算扩展到小时和分钟等。你必须注意,只有一个字母的缩写太短了。另外,创建一个时间值的函数是TIME,而不是DATE,但您可以在计算中混合两者的结果。(一天的时间是逗号后的部分,逗号前是自固定参考日期以来的天数。)
顺便说一句:对于许多只显示日期差异的服务,您只需单击或将鼠标悬停在该差异上即可查看实际日期而无需转换。

相关问题