You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将simmer仿真得到的时间单位数据转换为标准格式时间戳

解决方案

首先明确核心换算逻辑:
你提到仿真运行到2700单位对应7天时长,先计算单个仿真时间单位对应的实际时长:
7天总秒数 = 7 * 24 * 3600 = 604800 秒
单仿真单位对应秒数 = 604800 / 2700 = 224 秒
如果你的时间单位对应规则有调整,可自行修改换算系数即可


步骤1:指定基准开始时间

直接定义你需要的仿真0时刻对应的真实时间即可,例如要将仿真0点对应为2020-01-01 00:00:00,直接声明该时间变量即可。

步骤2:批量转换事件日志的起止时间

R实现(适配simmer原生环境)

simmer是R语言的离散事件仿真包,直接用R的时间处理函数操作最便捷:

library(dplyr)
library(lubridate)

# 定义参数
base_time <- ymd_hms("2020-01-01 00:00:00")
sim_unit_seconds <- 224 # 按2700单位=7天换算的结果

# 假设你的事件日志存储在df数据框中,自带start、end列
df <- df %>%
  mutate(
    # 转换为时间类型
    start_timestamp = base_time + seconds(start * sim_unit_seconds),
    end_timestamp = base_time + seconds(end * sim_unit_seconds),
    # 如需直接输出字符串格式,保留下面两行即可
    start_timestamp = format(start_timestamp, "%Y-%m-%d %H:%M:%S"),
    end_timestamp = format(end_timestamp, "%Y-%m-%d %H:%M:%S")
  )

Python实现(如果用Python处理导出的日志)

import pandas as pd
from datetime import datetime, timedelta

# 定义参数
base_time = datetime(2020, 1, 1, 0, 0, 0)
sim_unit_seconds = 224

# 读取日志文件
df = pd.read_csv("你的事件日志存储路径.csv")

# 时间转换
df['start_timestamp'] = df['start'].apply(lambda x: base_time + timedelta(seconds = x * sim_unit_seconds))
df['end_timestamp'] = df['end'].apply(lambda x: base_time + timedelta(seconds = x * sim_unit_seconds))

# 转指定格式的字符串
df['start_timestamp'] = df['start_timestamp'].dt.strftime('%Y-%m-%d %H:%M:%S')
df['end_timestamp'] = df['end_timestamp'].dt.strftime('%Y-%m-%d %H:%M:%S')

注意事项

  • 如果你后续修改了run(until=xxx)的停止阈值,记得重新计算单仿真单位对应的秒数,换算逻辑为:单单位秒数 = 预期仿真总时长的秒数 / 仿真停止阈值
  • 样例中超过2700的时间单位(如end为6699.370的记录)属于仿真结束后未完成的活动,可根据业务需求选择保留转换或直接过滤。

内容的提问来源于stack exchange,提问作者ncnc_2020

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 21:57:00