在《如何通过时间记录重生!》里,我将时间记录分为记录时间,统计时间和分析时间。
说实话,这里的每一步看似简单,实际上不容易。
记录时间
记录时间的问题如何记,记哪些。
很多人喜欢用时间记录app,比如爱时间,aTimeLogger等等。
这些app有这些缺点:
先分类,后记录事件。这就搞错了记录的顺序。每对事件分一次类,都耗费很多脑细胞思考。正确的分类,应该是先记录事件,然后集中事件分类。没有办法同时记录两件事。如果同时干两件事,比如运动时,同时听英语,我想把两个事情都记下来,app却无法做到。
时间的记录,最简单的方法是通过纸笔,如果是经常用电脑,也可以用flomo、记事本之类的工具。
很多人刚开始用时间记录时,总想把所有的事情都记录下来。
这是一个很好的想法,一开始很容易做到,毕竟刚开始谁都有激情。
但时间一长,一两周,很多人就坚持不下来了。
因为有很多事情很琐碎,就一两分钟的事情,记下来就很耗费时间。
这时候,可以转换思路,不用记每件事,而是要记你想记的事情,比如睡眠,某些经常干的工作,写作,阅读,运动的时间。
这不用自责,认为自己没有完全发挥时间记录的效力。
实际上,就算创造“时间统计法”的柳比歇夫也不是一下子就完备的使用该方法,也是不断升级,不断改进,才逐渐完善这个方法的。
记录关键事件的时间,对很多人足够用了。
统计时间
我使用PyCharm对时间-事件记录进行统计,输出结果为:开始时间、结束时间、时长、事件。
方法是直接复制时间记录,然后运行程序。运行程序的软件是PyCharm Community Edition 2024.1.4。
输出形式是excel表格的数据。
这几天,我开始阅读英文书,英语单词之间有空格,识别不方便,我这次修改了识别模式,实现根据时间+空格“XX:XX ”的识别文本。
代码如下:
import pyperclip
import pandas as pd
from datetime import timedelta
import os
import re
text = pyperclip.paste()
def extract_time_content(text):
# 使用正则表达式匹配时间格式
pattern = r(\d{1,2}:\d{2})\s*——\s*(\d{1,2}:\d{2})\s*(.*?)\s*(?=\d{1,2}:\d{2}|$)
matches = re.findall(pattern, text)
# 创建一个字典来存储结果
result = {}
for start_time, end_time, content in matches:
result[(start_time, end_time)] = content.strip()
return result
def statistical_time_records(text):
# Split the text into lines
lines = text.split(\n\n)
print(lines)
# Prepare lists to hold the data
start_times = []
end_times = []
events = []
# Process each line
for line in lines:
# Split the line into time part and event part using the last occurrence of ,
if in line:
line = line.replace(, ) #如果有两个空格,则替换为1个空格。
line= line.replace(—— , ——) #如果——后有空格,则替换掉。
extracted_info= extract_time_content(line)
else:
continue # Skip lines that dont contain an event part
# Split the time part into start and end times
for time_range, content in extracted_info.items():
start_time = time_range[0]
end_time = time_range[1]
event = content
# Append to lists
start_times.append(start_time)
end_times.append(end_time)
events.append(event)
# Create a DataFrame
df = pd.DataFrame({
Start Time: start_times,
End Time: end_times,
Event: events
})
# Convert Start Time and End Time to timedelta
df[Start Time] = pd.to_timedelta(df[Start Time].apply(lambda x: f”00:{x}“))
df[End Time] = pd.to_timedelta(df[End Time].apply(lambda x: f”00:{x}“))
# Calculate Duration
def calculate_duration(row):
if row[End Time] < row[Start Time]:
# Calculate the duration using 24:00
duration = (timedelta(minutes=24) – row[Start Time]) + row[End Time]
else:
duration = row[End Time] – row[Start Time]
return duration
df[Duration] = df.apply(calculate_duration, axis=1)
# Format Start Time, End Time, and Duration to minute:second
df[Start Time] = df[Start Time].dt.components.apply(lambda x: f”{int(x[minutes])}:{int(x[seconds]):02}“,
axis=1)
df[End Time] = df[End Time].dt.components.apply(lambda x: f”{int(x[minutes])}:{int(x[seconds]):02}“, axis=1)
df[Duration] = df[Duration].dt.components.apply(lambda x: f”{int(x[minutes])}:{int(x[seconds]):02}“, axis=1)
df = df[[Start Time, End Time, Duration, Event]]
# Print the string representation of the DataFrame
df.to_excel(remote_put.xlsx, index=False)
# Open the Excel file
os.system(start excel remote_put.xlsx)
return df
statistical_time_records(text)
3.分析时间
分析时间没有变化,还是复制到腾讯文档、excel等表格里,给事件分类后,通过“透视表”分析。
喜欢就分享吧,分享是种美德,也是最帮助别人的方法!