我在解析数据库中的时间字符串时遇到问题
private static final String TIME_FORMAT = "HH:mm:ss";
public static final SimpleDateFormat timeFormat = new SimpleDateFormat(TIME_FORMAT, Locale.getDefault());
并遵循输出:
String time = "17:17:57";
Date myParsedDate = timeFormat.parse(time); //forget the exception thing
//output of myParsedDate.toString = "Thu Jan 01 16:47:57 GMT+08:00 1970"
似乎区域设置或其他问题有问题..只是一个简单的字符串..为什么会这样?我只是希望日期是我的时间选择器所需的时间..哎呀..
编辑 因为我使用静态时间格式,所以我决定使用我的小助手方法
public static Date getTimeFromTimeString(String timeString)
{
String[] splitStrings = timeString.split(":");
Date timeDate = new Date();
timeDate.setHours(Integer.parseInt(splitStrings[0]));
timeDate.setMinutes(Integer.parseInt(splitStrings[1]));
timeDate.setSeconds(Integer.parseInt(splitStrings[2]));
return timeDate;
}
感谢乔恩·斯基特(Jon Skeet)的帮助..我相信这是时区偏移造成的....我只是坚持我的小方法..
最佳答案
问题是您正在打印 Date.toString()
的结果 - 它始终显示系统时区的结果。这可能不是您想要的。
Date
本身没有时区的概念 - 它只是时间的一个瞬间。
我建议您使用Joda Time如果可能的话。它有一个 LocalTime
,它实际上代表了您在这里解析的内容。
编辑:只是重申一下评论中的内容...我怀疑您的 DateFormat
中的时区与 Date.toString
使用的时区不同>。为了简单起见,可能值得将 DateFormat
的时区设置为 UTC,然后如果您想转换为 Calendar
,您应该设置那个 在调用 setTime(date)
之前也将时区设置为 UTC。
关于java - 使用 SimpleDateFormat 解析时间字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7608562/