【问题标题】:Transform text-date in format将文本日期转换为格式
【发布时间】:2017-06-28 03:46:24
【问题描述】:

我有一个如下所示的文本格式日期:

June 12th 2017, 9:07am PDT

如何将其转换为日期格式(经典方法 Format Cells 和 DateValue() 不起作用)?

谢谢。

【问题讨论】:

    标签: excel date text format


    【解决方案1】:

    我的解决方案使用一个帮助表,列出所有 12 个月及其序列号 A1:B12

    January     1
    February    2
    March       3
    April       4
    May         5
    June        6
    July        7
    August      8
    September   9
    October    10
    November   11
    December   12
    

    假设值在D10

    获取单独的元素

    月份:

    =VLOOKUP(LEFT(D10,FIND(" ",D10)-1),A1:B12,2,FALSE)
    

    日期:

    =IFERROR(VALUE(RIGHT(LEFT(D10,FIND(" ",D10)+2),2)),RIGHT(LEFT(D10,FIND(" ",D10)+1),1))
    

    年份:

    =RIGHT(LEFT(D10,FIND(",",D10)-1),4)
    

    小时:

    =IF(RIGHT(LEFT(D10,FIND(":",D10)+4),2)="am",RIGHT(LEFT(D10,FIND(":",D10)-1),2),RIGHT(LEFT(D10,FIND(":",D10)-1),2)+12)
    

    分钟:

    =RIGHT(LEFT(D10,FIND(":",D10)+2),2)
    

    所有这些都结合在 DATETIME 函数中,得到一个公式:

    =DATE(RIGHT(LEFT(D10,FIND(",",D10)-1),4),VLOOKUP(LEFT(D10,FIND(" ",D10)-1),A1:B12,2,FALSE),IFERROR(VALUE(RIGHT(LEFT(D10,FIND(" ",D10)+2),2)),RIGHT(LEFT(D10,FIND(" ",D10)+1),1)))+TIME(IF(RIGHT(LEFT(D10,FIND(":",D10)+4),2)="am",RIGHT(LEFT(D10,FIND(":",D10)-1),2),RIGHT(LEFT(D10,FIND(":",D10)-1),2)+12),RIGHT(LEFT(D10,FIND(":",D10)+2),2),0)
    

    然后将单元格的格式改为:

    mmmm dd yyyy hh:mm AM/PM "PDT"
    

    这将给出:

    June 12 2017 09:07 AM PDT
    

    要添加逗号(,),请使用自定义格式:

    mmmm dd yyyy"," hh:mm AM/PM "PDT"
    

    【讨论】:

    • 这个伟大的尼特什!非常感谢!但是,我不明白为什么在某些日期它不起作用(例如“2017 年 6 月 8 日,太平洋夏令时间上午 9:18”)。任何的想法?再次感谢您!
    • 那是因为它返回 8t 作为一天。我更新了公式来检查 1 位数的天数。 @麦克风
    • 非常感谢,但我很抱歉,因为现在小时和分钟不起作用:它只显示 12:00 AM。但是您编写的函数 TIME 本身就可以工作。当与 DATE 一起使用时,它不起作用。那就是我是否保留公式中的“+TIME”没有任何区别。
    • @Mic 我的错,在+TIME 之前错过了一个括号。立即检查。
    • 有效!!太感谢了!!我无法解决这个问题!
    猜你喜欢
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-12
    • 1970-01-01
    相关资源
    最近更新 更多