使用此值";2016-05-12 21:51:13-0500“;在Excel中

使用此值";2016-05-12 21:51:13-0500“;在Excel中,excel,excel-formula,excel-2010,Excel,Excel Formula,Excel 2010,如何使用日期时间-0500值 我有一张表,其值如下所示: 2016-05-12 21:51:13 -0500 我想马上使用它 我要筛选大于的所有记录 2016-05-12 00:00:01 -0500 但我不知道如何使用此值。您需要将数据转换为Excel日期/时间。在A1和B1中输入数据: =DATE(LEFT(A1,4),MID(A1,6,2),MID(A1,9,2))+TIME(MID(A1,12,2),MID(A1,15,2),MID(A1,18,2)) 和显示日期和时间的格式: 使

如何使用日期时间-0500值

我有一张表,其值如下所示:

2016-05-12 21:51:13 -0500
我想马上使用它

我要筛选大于的所有记录

2016-05-12 00:00:01 -0500

但我不知道如何使用此值。

您需要将数据转换为Excel日期/时间。在A1B1中输入数据:

=DATE(LEFT(A1,4),MID(A1,6,2),MID(A1,9,2))+TIME(MID(A1,12,2),MID(A1,15,2),MID(A1,18,2))
和显示日期和时间的格式:

使用以下公式:

=--LEFT(A1,LEN(A1)-5)
然后像这样格式化它

yyyy-mm-dd hh:mm:ss -\0\5\0\0


然后,您可以将值和格式复制粘贴到所需的位置

让我们假设,由于某种未知原因,Excel无法将您的字符串识别为有效的日期时间。您始终可以回到基本情况,并将字符串分解为其组件。让我们开始并假设日期时间和偏移量字符串位于单元格A1中

步骤1)剔除年度 步骤2)去掉月份 公式中的坏小子会寻找第一个和第二个,然后根据这些信息找到开始提取字符的起始位置,并计算出要提取的字符数

在您的情况下,我们可以将其设置为拉两个字符,并将其从第六个字符开始,因为您的日期格式没有变化。但是,在一般意义上,如果月份中不总是有前导零,或者有时您在一年中的四个字符和一年中的两个字符之间切换,则上述方法仍然有效

我还假设月是中间值(05),这里不是指12月5日

步骤3)抽出一天的时间 我们可以在这里使用类似的方法,使用
mid
,我们也可以对它进行硬编码(等等,我做了硬编码,返回两个字符)。我用了一个左右顺序来代替一点味道

=RIGHT(LEFT(A1,FIND(" ",A1)-1),2)
步骤4)抽出时间 现在,您可以完成整个过程并提取小时、分钟和秒,但Excel通常非常擅长识别时间格式,因为它没有太多变化。这也给了我们一个机会来了解处理字符串操作的新公式

现在,因为你的时间格式是恒定的,我有点懒了,因为你的格式总是有一个前导零,所以你的时间总是有八个字符长。因此,我使用了以下方法:

=TIMEVALUE(MID(A1,FIND(" ",A1)+1,8))
基本上,我抓取了整个时间,HH:mm:ss,并将其转储到timevalue中(注意还有一个datevalue)。Timevalue将尝试将时间格式的字符串转换为Excel时间格式的十进制值

如前所述,如果所有这些时间都印有相同的-0500,只需忽略它

为了将所有的日期和时间转换成一个单元格,我们将获取每个日期部分,并将它们放入date函数中,然后在上面添加时间组件。在Excel speak中,它看起来像:

=DATE(LEFT(A1,4),MID(A1,FIND("-",A1)+1,FIND("-",A1,FIND("-",A1)+1)-FIND("-",A1)-1),RIGHT(LEFT(A1,FIND(" ",A1)-1),2))+TIMEVALUE(MID(A1,FIND(" ",A1)+1,8))
现在,如果希望它与-0500一起显示,请查看格式。如果您想将时间转换为本地时间,并去掉-0500,则需要在上述公式中添加-5小时,如下所示:

=DATE(LEFT(A1,4),MID(A1,FIND("-",A1)+1,FIND("-",A1,FIND("-",A1)+1)-FIND("-",A1)-1),RIGHT(LEFT(A1,FIND(" ",A1)-1),2))+TIMEVALUE(MID(A1,FIND(" ",A1)+1,8))+time(-5,0,0)
如果我们不是那么懒,也不想硬编码时间,它看起来更像:

=DATE(LEFT(A1,4),MID(A1,FIND("-",A1)+1,FIND("-",A1,FIND("-",A1)+1)-FIND("-",A1)-1),RIGHT(LEFT(A1,FIND(" ",A1)-1),2))+TIMEVALUE(MID(A1,FIND(" ",A1)+1,8))+TIME(LEFT(RIGHT(A1,4),2),RIGHT(A1,2),0)*IF(LEFT(RIGHT(A1,5),1)="-",-1,1)

它总是
-0500
?我假设这是格林威治时间以外的本地时区调整?更好的问题是它存储为字符串,我猜它是-ISTEXT(A1)其中A1是您的时间。如果以下两种方法不适用于您,则与系统日期设置不匹配有关。但这是可以解决的。斯科特关于-0500的问题非常重要。这是您需要移动时间戳以获取本地时间的时间量,如果所有时间戳都是-0500,我们几乎可以忽略它,因为所有时间都移动相同的量。
=DATE(LEFT(A1,4),MID(A1,FIND("-",A1)+1,FIND("-",A1,FIND("-",A1)+1)-FIND("-",A1)-1),RIGHT(LEFT(A1,FIND(" ",A1)-1),2))+TIMEVALUE(MID(A1,FIND(" ",A1)+1,8))+time(-5,0,0)
=DATE(LEFT(A1,4),MID(A1,FIND("-",A1)+1,FIND("-",A1,FIND("-",A1)+1)-FIND("-",A1)-1),RIGHT(LEFT(A1,FIND(" ",A1)-1),2))+TIMEVALUE(MID(A1,FIND(" ",A1)+1,8))+TIME(LEFT(RIGHT(A1,4),2),RIGHT(A1,2),0)*IF(LEFT(RIGHT(A1,5),1)="-",-1,1)