字符串日期到通用时间转换java

时间:2012-02-09 22:11:50

标签: java

我正在尝试编写一个简单的脚本,在通用时间内转换一行的第一个字段。

 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)。

1 个答案:

答案 0 :(得分:3)

1)您确保您的阵列只有一个项目,因此它是argv[0],而不是argv[1]。数组总是从Java中的元素0开始。

2)Date.getTime()返回自纪元以来的毫秒数,而不是秒数。如果你想要秒,除以1000.当我以毫秒为单位时,该值看起来很好......