function to change json file timestamp format to datetime in python

Viewed 308

So this this is what I have done so far

import json
from datetime import datetime

f = open("group1.json","r")

group1 = json.load(f)

def timestamp_to_date():

    for item in group1:
        timestamp= item['date']
        timestamp = timestamp / 1000
        dt_obj = datetime.fromtimestamp(timestamp).strftime('%Y, %m, %d ')
  
    print(dt_obj)
    return dt_obj

timestamp_to_date()
f.close()


But only returns one value and I want to loop the whole dict using a func like below.

# TODO
def timestamp_to_date(timestamp):
    raise NotImplementError('Please implement.')

# confirm success
assert timestamp_to_date(1584957443013) == datetime.date(2020, 3, 23)
print('Success.')
2 Answers

If you need to return multiple values you need to return list

import json
from datetime import datetime

f = open("group1.json","r")

group1 = json.load(f)

def timestamp_to_date():
    l = []
    for item in group1:
        timestamp= item['date']
        timestamp = timestamp / 1000
        dt_obj = datetime.fromtimestamp(timestamp).strftime('%Y, %m, %d ')
        l.append(dt_obj)
        print(dt_obj)
  
    return l

timestamp_to_date()
f.close()

Also if you want to return datetime, you don't want to use strftime

Just extract the loop outside of the function:

import json
from datetime import datetime

f = open("group1.json","r")

group1 = json.load(f)

dates = []

for item in group1:
    timestamp = item['date']
    date = timestamp_to_date(timestamp)
    dates.append(date)

f.close()

def timestamp_to_date(timestamp):
    timestamp = timestamp / 1000
    return datetime.fromtimestamp(timestamp).strftime('%Y, %m, %d ')
Related