文字中的时间戳是“Mon May 16 00:01:46 IST 2016”。 我应该如何将此字符串转换为dd / mm / yyyy hh:mm:ss时间格式的excel?
答案 0 :(得分:4)
您将需要经历一系列字符串操作和日期时间功能。让我们假设你的字符串在A1单元格中。为了做到这一点,我们将从最大单位(年)到最小单位(秒)工作。你可以按任何顺序进行,因为它将被集中到一次公式中,但是对于步骤的细分,它有利于订购。
=RIGHT(A1,4)
这将给我们字符串的最后4个字符,在这种情况下是年份。
=MONTH(DATEVALUE(MID(A1,FIND(" ",A1)+1,FIND(" ",A1,FIND(" ",A1)+1)-FIND(" ",A1)-1)&"-"&1))
丑陋地看着第一个和第二个空格的位置,然后拉出你的月份之间的字符串。然后通过向其添加 - 和数字1,将其转换为excel倾向于识别为日期缩写形式的格式。所以在你的情况下,如果看起来像5月1日。 Datevalue将此转换为excel日期序列,然后我们将其拉回并从您的案例中获取月份5
如果上述公式不适合您,可能是由于区域设置。如果是这种情况,您可以使用以下内容:
=MATCH(MID(A1,FIND(" ",A1)+1,3),{"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"},0)
如果您使用此替代公式,请务必相应地调整最终等式。
=TRIM(MID(A1,FIND(" ",A1,FIND(" ",A1)+1)+1,2))
所以上面的公式找到第二个空格,然后开始拉动它后面的下一个字符,总共两个字符。现在因为我不知道这个月的第一个是01还是1,我可能会在1之后抓住空间。修剪功能会删除多余的空间。
excel中的DATE函数需要YEAR,MONTH和DAY,并将这些值转换为excel日期序列。在这种情况下,我们将转换:
=DATE(year,month,day)
通过从上面代入我们的方程式来:
=DATE(right(A1,4),MONTH(DATEVALUE(MID(A1,FIND(" ",A1)+1,FIND(" ",A1,FIND(" ",A1)+1)-FIND(" ",A1)-1)&"-"&1)),TRIM(MID(A1,FIND(" ",A1,FIND(" ",A1)+1)+1,2)))
我将假设这是一个24小时制,因为没有AM / PM指示器。您可以通过拉出小时,分钟和秒来拉动时间,类似于DATE功能,使用TIME功能。然而,你的时间是一种可识别的格式,所以我们可以一次性拉动。我们也会作弊,因为我们可以通过您的格式告诉您时间中的所有单个数字都有前导零。这意味着你的时间字符串是一个8的常量长度。而不是找到第3个空格尽可能使嵌套的find语句真的很难看,我们将找到第一个:并结束以下内容:
=MID(A1,FIND(":",A1)-2,8)
注意我们从第一个字符开始返回2个字符:然后从该点开始向右拉出总共8个字符。现在我们将它作为一个很好的时间字符串,我们可以使用TIMEVALUE函数将其转换为时间,如下所示:
=TIMEVALUE(MID(A1,FIND(":",A1)-2,8))
因为在excel中日期存储为整数,并且时间存储为小数,我们可以简单地将两者一起添加并将日期和时间存储在同一单元格中。我们将通过以下方式实现这一目标:
=DATE(right(A1,4),MONTH(DATEVALUE(MID(A1,FIND(" ",A1)+1,FIND(" ",A1,FIND(" ",A1)+1)-FIND(" ",A1)-1)&"-"&1)),TRIM(MID(A1,FIND(" ",A1,FIND(" ",A1)+1)+1,2)))+TIMEVALUE(MID(A1,FIND(":",A1)-2,8))
因此对于包含公式的单元格而不是GENERAL格式,请选择CUSTOM格式。在您可以键入的栏中,输入以下显示格式:
dd/mm/yyyy hh:mm:ss
如果步骤2中的公式适合您,则可以使用以下作为您的日期公式:
=DATEVALUE(TRIM(MID(A1,FIND(" ",A1,FIND(" ",A1)+1)+1,2))&"-"&A3&"-"&RIGHT(A1,4))
,您的合并日期时间公式为:
=DATEVALUE(TRIM(MID(A1,FIND(" ",A1,FIND(" ",A1)+1)+1,2))&"-"&A3&"-"&RIGHT(A1,4))+TIMEVALUE(MID(A1,FIND(":",A1)-2,8))
文本/字符串函数
日期/时间函数