Home > Blockchain >  How to convert datetime.datetime to GMT format python?
How to convert datetime.datetime to GMT format python?

Time:02-01

I am having an input as:

test_date = 2019-06-15 10:16:55-06:00

the code to convert is:

new_value= datetime.strptime(test_date, '%a, %d %b %Y %H:%M:%S GMT')

After getting the value from new_value> I need to convert it to:

new_date = new_value.strftime("%m/%d/%Y %I:%M:%S %p")

But I am getting an error as below:

TypeError: strptime() argument 1 must be str, not datetime.datetime

When I try to convert test_date as string like str(test_date). It causes

 ValueError: time data '2019-06-15 10:16:55-06:00' does not match format '%a, %d %b %Y %H:%M:%S GMT'

How can I achieve this?

CodePudding user response:

new_value= test_date.strftime("%d %b %Y %H:%M:%S GMT")
new_date = datetime.strptime(new_value,'%d %b %Y %H:%M:%S %Z')

new_date will give you the output.

CodePudding user response:

You need to specify you date format at strptime to parse date correctly.

Then you need to convert date to GMT timezone like this

from datetime import datetime

test_date = '2019-06-15 10:16:55-06:00'
new_value = datetime.strptime(test_date, '%Y-%m-%d %H:%M:%S%z')
new_value_timestamp = new_value.timestamp()
gmt_date = datetime.utcfromtimestamp(new_value_timestamp)
new_date = gmt_date.strftime("%m/%d/%Y %I:%M:%S %p")
print(new_date)

Output

06/15/2019 04:16:55 PM

CodePudding user response:

    from datetime import datetime

    date_string = "21-June-2018"
    date_string1 = "2019-06-21 10:16:55-0600"

    print("date_string =", date_string)
    print("type of date_string =", type(date_string))

    date_object = datetime.strptime(date_string, "%d-%B-%Y")
    date_object1 = datetime.strptime(date_string1, "%Y-%m-%d %H:%M:%S%z")

    print("date_object =", date_object)
    print("date_object1 =", date_object1)
    print("type of date_object =", type(date_object))

CodePudding user response:

%a refers to weekday like Sun, Mon, ..., etc, but it does not appear in your test_date input. Therefore it raises an error. -06:00 means Central Standard Time, e.g. in United states, Chicago. Try the following instead.

from datetime import datetime

test_date = '2019-06-15 10:16:55-06:00'
new_value = datetime.strptime(test_date, '%Y-%m-%d %H:%M:%S%z')
new_value = new_value.timestamp()
new_value = datetime.utcfromtimestamp(new_value) #change from CST to GMT
new_date = new_value.strftime("%m/%d/%Y %I:%M:%S %p")
print(new_date)

06/15/2019 04:16:55 PM

CodePudding user response:

First of all you would have to need have specified %a in your input, which you don't the %a is shorted name of a weekday etc. Sun, Fri, Sat. Second, your input has unknown format test_date = 2019-06-15 10:16:55-06:00 no idea what you meant by that but it souldn't be there.

Your code would look like:

from datetime import datetime
test_date = '2019-06-15 10:16:55-06:00' #Gotta have it as a string so the format is correct
new_value= datetime.strptime(test_date, '%Y-%m-%d %H:%M:%S-06:00')#The -6:00 should not be there, but if you need it you need to have it like this here.
new_date = new_value.strftime("%m/%d/%Y %I:%M:%S %p") #this was correct
print(new_date)
  •  Tags:  
  • Related