Suji
Suji

Reputation: 141

How to convert datetime.datetime to GMT format python?

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?

Upvotes: 2

Views: 2172

Answers (4)

Navi
Navi

Reputation: 1052

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.

Upvotes: 0

Ka Wa Yip
Ka Wa Yip

Reputation: 2983

%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

Upvotes: 2

    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))

Upvotes: 1

Yevhen Bondar
Yevhen Bondar

Reputation: 4707

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

Upvotes: 1

Related Questions