我正在尝试编写一个简单的脚本,在通用时间内转换一行的第一个字段。
import java.util.*;
import java.text.*;
import java.io.*;
public class StringToDate {
public static void main(String[] argv) {
if (argv.length != 1) {
System.err.println("Usage: java StringToDate file.in");
System.exit(1);
}
try {
FileInputStream fstream = new FileInputStream(argv[1]);
String delims = "[,]+";
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
while ((strLine = br.readLine()) != null) {
String[] tokens = strLine.split(delims);
DateFormat formatter ;
long epoch = new java.text.SimpleDateFormat ("yyyy-MM-dd HH:mm:ss").parse(tokens[0]).getTime();
System.out.println(String.valueOf(epoch)+',' +tokens[1]+'\n');
}
//Close the input stream
in.close();
}
catch (Exception e){System.err.println("Error: " + e.getMessage());}
}
}
文件格式为:
2012-02-12 17:00:00,(Sun) Kardemir Karabukspor v Fenerbahce
两个问题:
1)当我把argv [1]作为参数时,为什么这段代码无法打开文件?
2)为什么世界时是一个完全错误的数字?即输出
1329062400000,(Sun) Kardemir Karabukspor v Fenerbahce
即,通用时间是三个0更长(实际上必须是1329062400)。
答案 0 :(得分:3)
1)您确保您的阵列只有一个项目,因此它是argv[0]
,而不是argv[1]
。数组总是从Java中的元素0开始。
2)Date.getTime()
返回自纪元以来的毫秒数,而不是秒数。如果你想要秒,除以1000.当我以毫秒为单位时,该值看起来很好......