我有两个字符串:“孙俊23”和“22:45”。我想获得由这两个字符串加上实际年份所表示的日期的长(毫秒?)表示。
我正在尝试这样的事情:
String s1 = "Sun Jun 23";
String s2 = "22:45";
long date = new SimpleDateFormat("EEE MMM dd").parse(s1).getTime()
+ new SimpleDateFormat("HH:mm").parse(s2).getTime();
当我使用
将长日期格式转换回String时private SimpleDateFormat sdf;
sdf = new SimpleDateFormat("yyyy.MM.dd_HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
console.getOut().println(sdf.format(date));
我得到了“1970.06.23_20:45:00”
这表明存在两个问题:
答案 0 :(得分:2)
尝试连接字符串,然后解析日期并获取时间
String completeTime = s1 + " " + s2;
SimpleDateFormat sdf = new SimpleDateFormat ("EEE MMM dd HH:mm")
Date date = sdf.parse(completeTime)
long millis = date.getTime()
修改.. 强> 在抱歉之前完全阅读了整个问题...
在您的日期之前的任何地方都没有读取年份,因此您必须添加它或从某处读取它,如果是年份,我建议使用Calendar对象来获取它
您的millis长度解析中的时区信息似乎导致时差,您可以尝试使用"GMT+2"
来纠正此问题,但这可能并不总是正确的。如果你取出settin gof时区会改变你的结果吗?
答案 1 :(得分:0)
我得到了更多,但有一个不同的问题:
String s1 = "Sun Jun 23";
String s2 = "22:45";
SimpleDateFormat f = new SimpleDateFormat("YYYY EEE MMM dd HH:mm");
f.setTimeZone(TimeZone.getTimeZone("GMT")); //thanks for the timezone hints!
Date d;
long date;
int year;
try {
year = Calendar.getInstance().get(Calendar.YEAR);
String fullDate = year + " " + s1 + " " + s2;
d = f.parse(fullDate);
date = d.getTime();
SimpleDateFormat sdf2;
sdf2 = new SimpleDateFormat("yyyy.MM.dd_HH:mm:ss");
sdf2.setTimeZone(TimeZone.getTimeZone("GMT"));
console.getOut().println(sdf2.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
打印出: 2012.12.30_22:45:00
时区现在看起来还不错(我看到22:45),
fullDate包含正确的字符串(“2013 Sun Jun 23 22:45”)。
为什么我没有得到正确的日期?