如何排序不同的日期时间格式?

时间:2017-12-14 21:40:26

标签: python algorithm python-3.x

我有以下代码:

var worker = new Worker('FirebaseWorker.js')
worker.onmessage = event => {
    if (event.data.error)
        alert(event.data.error)
    // ...
}
worker.postMessage({
    data: {/* your data (required if set or update is used) */},
    path: '/path/to/reference',
    action: 'get, set, update, or remove',
    email: 'someone@example.com',
    password: 'password123'
})

如果某些元素具有不同的格式,如comments = sorted(comments, key=lambda k: k['time_created']) 2017-12-14T17:42:30.345244+0000,并且在尝试比较时我的代码失败,如何正确排序?

我需要保存2017-12-14 00:23:23.468560准确度。

这是一个好的解决方案吗?

seconds

2 个答案:

答案 0 :(得分:1)

Python datetime对象具有可比性,因此可以排序。我假设您目前不使用日期时间对象,但使用字符串。以下示例代码取自 How to format date string via multiple formats in python

import dateutil.parser
dateutil.parser.parse(date_string)

然后,您将通过

将字符串列表转换为datetime个对象
list_of_dt_objs = [dateutil.parser.parse(str) for str in list_of_strings]

请注意,dateutil是一个扩展库。所以你必须安装它,例如通过pip

答案 1 :(得分:0)

这样的事情:

import re
import operator

def convert_to_secs(date_string):
    multipliers = [31557600,2592000,86400,3600,60]
    date_in_secs = 0
    index = 0
    for v in re.split(':|-|T|\.|\+|\ ',date_string):
        if index < len(multipliers):
            date_in_secs = date_in_secs + int(v) * multipliers[index]
            index += 1
        else:
            break
    return date_in_secs

def sort_dates(my_dates_in_string):
    my_dates_dict = {}
    for string_date in my_dates_in_string:
        my_dates_dict[string_date] = convert_to_secs(string_date)
    return sorted(my_dates_dict.items(), key=operator.itemgetter(1))

print sort_dates(["2017-12-14T17:42:30.345244+0000", "2017-12-14 00:23:23.468560"])