2

How can I convert "dd/MM/yyyy", "HH:mm", "dd-MMM-yy", "M/d/yyyy" etc., to "%d/%m/%Y", "%H:%M", "%d-%b-%y" or "%m/%d/%Y" etc?

Bleeding Fingers
  • 6,993
  • 7
  • 46
  • 74

2 Answers2

2

You may extend replacements to cover all possible user date time formats (you may also edit this answer to include them here)

import re

replacements = {
    r'dd': '%d',
    r'd': '%d',
    r'MM': '%m',
    r'M': '%m',
    r'yyyy': '%Y',
    r'HH': '%H',
    r'mm': '%M',
    r'MMM': '%b',
    r'yy': '%Y',
}

def fn(match):
    return replacements[match.group()]

def F(text):
    pat = '|'.join(r'\b' + re.escape(k) + r'\b' for k in replacements)
    return re.sub(pat, fn, text)

>>> F("dd/MM/yyyy")
'%d/%m/%Y'
>>> F("HH:mm")
'%H:%M'
>>> F("dd-MMM-yy")
'%d-%b-%Y'
>>> F("M/d/yyyy")
'%m/%d/%Y'
jamylak
  • 128,818
  • 30
  • 231
  • 230
0

change the format of date time

import datetime

d = datetime.datetime.strptime("2013-05-24", "%Y-%m-%d") datetime.datetime(2013, 5, 24, 0, 0)

d.format("%d.%b.%Y") '24-May-2013'

The format function in put before and after two underscore

Naresh Chaudhary
  • 705
  • 5
  • 14