我在Java / Android中有时间戳的wierdo问题
Date inputDate = null;
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm dd/MM/yyyy");
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
Log.e("DateH:D", hour+" "+day);
try {
inputDate = sdf.parse(hour + " " + day);
Date currentDate = new Date();
Log.e("InputDate", inputDate.toString());
Log.e("InputDate",inputDate.getTime()+"");
Log.e("CurrentDate", currentDate.toString());
Log.e("CurrentDate",currentDate.getTime()+"");
if (!inputDate.after(currentDate) ){
//TODO change this string
hourField.setError("Date from past");
return false;
}
} catch (ParseException e) {
Log.e("DateParser" , e.getLocalizedMessage);
return false;
}
此示例输出为:
DateH:D: 12:33 15/09/16
E/InputDate: Tue Sep 15 14:33:00 CET 16
E/InputDate: -61640134020000
E/InputDate: Tue Sep 15 14:33:00 CET 16
E/CurrentDate: Thu Sep 15 11:38:43 CEST 2016
E/CurrentDate: 1473932323198
因此,日期的非时间戳表示是正确的,但时间戳是错误的。怎么可能?我做错了什么?
答案 0 :(得分:2)
使用yy
解析2位数年份。
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm dd/MM/yy");
答案 1 :(得分:1)
Date
的{{3}}方法:
返回自1970年1月1日00:00:00 GMT以来的毫秒数 由此Date对象表示。
由于您指定的年份是 16年,否定结果是有意义的。
答案 2 :(得分:1)
epoch milis的开始日期是星期四,1970年1月1日00:00:00 GMT。之前的任何日期时间都是在epoch milis中为负。