Java实现打印两个日期间含时分秒毫秒的所有时间点
解决高精度时间区间遍历输出问题
我来帮你搞定这个需求!要打印两个包含毫秒的时间点之间的所有时间(逐毫秒递增),咱们可以用Python来实现,思路清晰还容易调试。
核心思路
- 把起始和结束的时间字符串转换成带毫秒精度的时间对象
- 从起始时间开始,每次递增1毫秒
- 逐个格式化输出时间,直到达到结束时间为止
Python代码实现
from datetime import datetime, timedelta # 定义你的起始和结束时间字符串(注意这里的日期格式是年/日/月,和常见格式对应解析即可) start_str = "2018/20/01 15:20:31:001" end_str = "2018/20/01 19:34:03:001" # 解析时间字符串:%Y=年,%d=日,%m=月,%H=时,%M=分,%S=秒,%f=毫秒(取前三位) time_format = "%Y/%d/%m %H:%M:%S:%f" start_time = datetime.strptime(start_str, time_format) end_time = datetime.strptime(end_str, time_format) # 初始化当前时间为起始时间 current_time = start_time # 循环遍历并输出所有时间点 while current_time <= end_time: # 格式化输出,保留三位毫秒 print(current_time.strftime("%Y/%d/%m %H:%M:%S:%f")[:-3], end='、') # 每次递增1毫秒 current_time += timedelta(milliseconds=1)
关键细节说明
- 时间解析格式
%Y/%d/%m %H:%M:%S:%f完全匹配你给出的时间格式,其中%f会读取后面的三位毫秒数(Python的datetime默认支持微秒,取前三位就对应毫秒) - 用
timedelta(milliseconds=1)实现逐毫秒递增,确保每个时间点都被覆盖 - 循环条件
current_time <= end_time保证最后一个结束时间点也会被输出
如果你的日期格式其实是年/月/日(可能是输入时的笔误),只需要把时间格式改成"%Y/%m/%d %H:%M:%S:%f"即可,其他代码不用调整。要是你需要用Java、C#等其他语言实现,核心思路也是一致的:解析高精度时间对象,逐毫秒递增遍历输出。
内容的提问来源于stack exchange,提问作者Mavematt
相关产品推荐
相关产品推荐

