Python时间日期匹配

2024-10-03 09:10:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我调用了一个函数,它在通过For循环的事件上生成时间戳。你知道吗

函数和原始时间戳

def atimer ():
        timenow = time.time()
        return(timenow)

print timenow
1434615010.27858

时间戳看起来像“1434615010.27858”,对于sqlite3中的数据库使用来说,它既漂亮又小。当我使用datetime转换时间戳时,我得到了一个正确的时间语句(见下文)。。你知道吗

已转换

>>> print datetime.datetime.fromtimestamp(1434615010.27858)
2015-06-18 10:10:10.278580

这个非常有效的问题的问题是,我有大量的事件显示为下面的时间戳打印输出。你知道吗

2015-06-18 11:36:57.830000
2015-06-18 11:36:57.830000
2015-06-18 11:36:57.830000
2015-06-18 11:36:59.340000
2015-06-18 11:36:59.340000
2015-06-18 11:36:59.340000
2015-06-18 11:37:00.740000
2015-06-18 11:37:00.740000
2015-06-18 11:37:00.740000
2015-06-18 11:37:02.130000

我想相互比较时间戳,然后在给定的时间内只将第一个时间戳提交给数据库(SQL更新)。你知道吗

问题>;Regex是我在这里的唯一选择吗?或者我可以把这个时间戳本身调低一点,不给我这么详细的时间戳吗?你知道吗

信息:我选择这个时间戳的主要原因是它很小,在数据库中占用的空间较少,特别是当您使用1000个时间戳时。你知道吗

下面是我想要得到的输出…

2015-06-18 11:36
2015-06-18 11:37

提前谢谢


Tags: 函数数据库fordatetimereturntimedef时间
3条回答

为什么不把它们放进一个dict,这样你每分钟只能得到一个条目:

times = [
    '2015-06-18 11:36:57.830000',
    '2015-06-18 11:36:57.830000',
    '2015-06-18 11:36:59.340000',
    '2015-06-18 11:36:59.340000',
    ]

time_dict = {}

for time in times:
    time_dict[(time.split('.'))[0][:-3]] = 1

print(time_dict.keys())

更好的是,你可以在翻译日期之前创建dict。这样,每个条目只需进行一次转换:

times = [
    '1434615010.27858',
    '1434615010.27858',
    ]

time_dict = {}

for time in times:
    time_dict[time] = 1

for time in time_dict.keys():
    date = datetime.fromtimestamp(float(time))
    print((str(date).split('.')[0])[:-3])

一个简单的解决方法是记住你最后打印的东西是什么,并且只有在新的东西不同时才重新打印出来:

lastTime = None
while True:
    thisTime = datetime.datetime.fromtimestamp(atimer()).strftime("%Y-%m-%d %H:%M")
    if thisTime != lastTime:
        print thisTime
        lastTime = thisTime

您可以从每个日期中删除秒和微秒,以获得所需的输出:

import datetime

aDate = datetime.datetime.fromtimestamp(1434615010.27858)

print aDate

aDate -= datetime.timedelta(seconds=aDate.second, microseconds=aDate.microsecond)

print aDate

这张照片:

2015-06-18 05:10:10.278580
2015-06-18 05:10:00 

相关问题 更多 >