java - 使用 SimpleDateFormat 解析时间字符串

标签 java android simpledateformat

我在解析数据库中的时间字符串时遇到问题

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/

相关文章:

java - 谁能给我一个显示 SimpleDateFormat 线程不安全的例子?

java - Android Dateformatter 问题

java - 我在更换 jpanel 上的 jmenubar 时遇到问题

java - 用户从图库或自定义相机中选择图像,而不是图像的相机应用程序

android - 打包/Maven 化公共(public)软件组件

android - 无法启动 GCM Intent 服务

android - 如何在 Android 中设置按钮内可绘制矢量的大小?

java - 使用 SimpleDateFormat 将日期转换为友好格式

java - 递归查找给定长度的平方和的顺序

java - 有效地检查大型数据集的子字符串