我使用 jflow-0.3[1] 来收集和解码从路由器接收到的 netflow 记录。nettrack.net.netflow.Flow.java 类包含从接收到的记录中解码必要数据的代码。我调用了它的 getFirst() 函数,它返回“此数据收集期开始时的协调世界时 (UTC) 秒时间。 ”[2]。然后我使用以下代码将其转换为日期时间格式。
long seconds = getFirst();
long millis = seconds * 1000;
Date date = new Date(millis);
SimpleDateFormat sdf = new SimpleDateFormat("EEEE,MMMM d,yyyy h:mm,a", Locale.ENGLISH);
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
String formattedDate = sdf.format(date);
System.out.println(formattedDate);
但是当我运行它时,我观察到日期的奇怪结果,例如 Monday,March 2,1970 4:21,PM, Sunday,April 27,2059 4:17,AM 等。UTC 值也从非常小的值(如 300)变为非常大的值(如 3154137089),这没有任何意义。这里有什么问题?我该如何解决这个问题?