繁体   English   中英

格式化时间从dd / mm / yyyy hh:mm:ss到yyyy.mm.dd hh:mm

[英]Formatting time from dd/mm/yyyy hh:mm:ss to yyyy.mm.dd hh:mm

我收到以下任务:将“ dd / mm / yyyy hh:mm:ss”时间转换为“ yyyy.mm.dd hh:mm”格式。

我希望一个简单的Format(activecell.value,“ yyyy.mm.dd hh:mm”)会有所帮助,但是。 在某些情况下,它可以工作。 但是,在某些特殊情况下,事实并非如此。 当日期介于01-12之间(可以与月份互换!)时,它会使月份与月份混乱。 (可能是由于美国风格的日期格式。)

例如,原始文本字符串:04/06/2013 09:00:00

预计:2013.06.04 09:00

结果:2013.04.06 09:00(日期和月份已交换)

我试图通过格式化输入来克服它,我给了它一个“ dd / mm / yyyy hh:mm:ss”自定义格式。 没有帮助,它仍然交换日期和月份。

所以我不再有主意,而是正则表达式。 日期格式始终相同,因此只需移动字符串的一部分就可以。 但是,我不知道它是如何工作的,谷歌搜索会带来令人困惑的结果。

谁能帮我? 当然,如果有更优雅的方法可以做到这一点,那也是值得欢迎的。

尝试使用此自定义格式:

yyyy/mm/dd h:mm;@

要输入它,请右键单击该单元格,然后选择“设置单元格格式”:

格式化单元格

然后在“ Number选项卡下,从列表框中选择“ Custom ”。 然后在“ Type:文本框中输入提供的格式。

例

如果那不起作用。 您*****绝对*****肯定地说04/06/2013 09:00:00是2013年4月6日,而不是2013年6月4日吗?

如果仍然无法使用,并且您已确认日期正确。

Sub ChangeDateFormat()

Application.ScreenUpdating = False

Dim CurrentCell As Range
Dim LastRow As Long
Dim RegEx As Object
Set RegEx = CreateObject("vbscript.regexp")
RegEx.Global = True

LastRow = Range("A" & Rows.Count).End(xlUp).Row 'Get The Last Row in Column Change A as Needed

For Each CurrentCell In Range("A1:A" & LastRow) ' Loop through all cells. Change Column as needed

    If InStr(CurrentCell.Value, "/") <> 0 Then 'To make sure only convert non converted ones

        RegEx.Pattern = "(\d{2})/(\d{2})/(\d{4}) (\d{2}):(\d{2}):(\d{2})" ' Seperate all parts of imported Data into groups
        CurrentCell.Value = RegEx.Replace(CurrentCell.Value, "$3.$2.$1 $4:$5") ' Change order of groups and place into cell.

    End If

Next

Application.ScreenUpdating = True

End Sub

*****注意:*****仅当所有日期值均为dd/mm/yyyy hh:mm:ss时,此方法才有效,否则,您将不得不添加一些错误处理并可能略微修改代码因为它导致问题。

这也适用于其他文本中的日期。 如果A1的值是

This is a test 04/06/2013 09:00:00 Lets see what happens

然后新值将是

This is a test 2013.06.04 09:00 Lets see what happens

这很简单。 只需按照以下步骤选择整个列或什至是所需的单元格,请右键单击并选择格式单元格选项,将在数字选项卡选择日期中打开一个选项卡窗口,从区域设置下拉菜单中选择英语(南非),然后从给定的类型中选择您的所需的反向格式。 你完成了:)

如果月份和日期在错误的位置,则可以使用日期格式的"DATE(YEAR(A1),DAY(A1),MONTH(A1))""DATE(MID(A1,7,4),LEFT(A1,2),MID(A1,4,2))"如果为文本格式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM