查找日期最相近的数据文件

set target_time "2024-02-22 11:07:32"
set earliest_positive_time_diff 9999999999
set earliest_positive_file ""

# 文件列表
set file_list {
    "2024-02-22_11-07-31_lidar.sany"
    "2024-02-22_11-07-30_lidar.sany"
    "2024-02-22_11-07-33_lidar.sany"
}

# 提取文件名中的日期和时间
foreach file $file_list {
    set filename_parts [split [file rootname $file] "_"]
    set date_time_parts [split [lindex $filename_parts 0] "-"]
    
    set file_year [lindex $date_time_parts 0]
    set file_month [lindex $date_time_parts 1]
    set file_day [lindex $date_time_parts 2]
    
    set time_parts [split [lindex $filename_parts 1] "-"]
    set file_hour [lindex $time_parts 0]
    set file_minute [lindex $time_parts 1]
    set file_second [lindex [split [lindex $time_parts 2] "."] 0]
    
    # 格式化文件时间与目标时间一致
    set formatted_file_time "$file_year-$file_month-$file_day $file_hour:$file_minute:$file_second"
    
    # 计算目标时间与文件时间的差值
    set time_diff [expr {[clock scan $target_time] - [clock scan $formatted_file_time]}]
    
    # 如果时间差大于等于0,则打印文件名
    if {$time_diff >= 0 && $time_diff < $earliest_positive_time_diff} {
        set earliest_positive_time_diff $time_diff
        set earliest_positive_file $file
    }
}

if {$earliest_positive_file ne ""} {
    puts "要排查的文件是:$earliest_positive_file,时间差:$earliest_positive_time_diff"
} else {
    puts "没有找打相关文件。"
}