Java-将SQL db中的日期格式字符串转换为日期对象以进行比较
我在数据库中存储了一个字符串示例:Sat Jul 09 14:20:31 EDT 2011 这是以字符串形式存储的。我知道SQLs的日期功能,但我现在不打算探讨这一点 我想使用Date.compare函数将其与当前时间进行比较 日期当前日期=新日期;//新的当前时间值 mCursor.getStringmCursor.getColumnIndexTIMECOLUMN//从SQL数据库中提取的旧存储时间值 从数据库中,我有一个字符串值已格式化为正确的日期。但我没有一个明显的功能来将它与作为日期对象的当前日期进行比较 我需要知道其中一个是否大于、小于或等于另一个。日期比较函数允许这样做,但对象必须是日期对象 我尝试过使用字符串的日期格式作为种子的SimpleDataFormat,但是我得到了一个解析异常不可解析的日期,可能是因为它已经格式化了 日期currentDate=新日期; SimpleDataFormat dateTest=新SimpleDataFormat M d HH:mm:ss z y; ifcurrentDate.compareTodateTest.parsemCursor.getStringmCursor.getColumnIndexTIMECOLUMN>0 返回java.text.ParseException:不可解析日期:2011年7月9日星期六14:20:31 EDTJava-将SQL db中的日期格式字符串转换为日期对象以进行比较,java,sql,date,format,simpledateformat,Java,Sql,Date,Format,Simpledateformat,我在数据库中存储了一个字符串示例:Sat Jul 09 14:20:31 EDT 2011 这是以字符串形式存储的。我知道SQLs的日期功能,但我现在不打算探讨这一点 我想使用Date.compare函数将其与当前时间进行比较 日期当前日期=新日期;//新的当前时间值 mCursor.getStringmCursor.getColumnIndexTIMECOLUMN//从SQL数据库中提取的旧存储时间值 从数据库中,我有一个字符串值已格式化为正确的日期。但我没有一个明显的功能来将它与作为日期对
我怀疑我的SimpleDataFormat种子不正确。我相信您只需将格式字符串中的M更改为MMM即可:
SimpleDateFormat format = new SimpleDateFormat("E MMM d HH:mm:ss z y");
M是一个潜在的单位数值,例如1、10等。MMM是一个短月份名称,例如七月、九月
但是,您可能还应该指定日期格式的区域设置。我还强烈建议您将当前庞大的语句分解为几个部分,以便于理解和调试:
我还建议您在与日期/时间相关的工作中使用,并避免将日期/时间数据存储为数据库中的文本:我相信您只需将格式字符串中的M更改为MMM即可:
SimpleDateFormat format = new SimpleDateFormat("E MMM d HH:mm:ss z y");
M是一个潜在的单位数值,例如1、10等。MMM是一个短月份名称,例如七月、九月
但是,您可能还应该指定日期格式的区域设置。我还强烈建议您将当前庞大的语句分解为几个部分,以便于理解和调试:
我还建议您在与日期/时间相关的工作中使用,并避免将日期/时间数据存储为数据库中的文本:是,日期格式不正确。下面是一个演示:
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test {
public static void main(String[] args) throws Exception {
SimpleDateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
System.out.println(new Date());
String string = "Sat Jul 09 14:20:31 EDT 2011";
System.out.println(df.parse(string));
}
}
是,日期格式不正确。下面是一个演示:
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test {
public static void main(String[] args) throws Exception {
SimpleDateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
System.out.println(new Date());
String string = "Sat Jul 09 14:20:31 EDT 2011";
System.out.println(df.parse(string));
}
}
异常意味着:您试图解析的字符串与您设置的模式不匹配。重新访问SimpleDataFormat文档,尝试几次,您就会发现问题所在。异常的意思是:您尝试解析的字符串与您设置的模式不匹配。重温SimpleDateFormat文档,做几次尝试,你就会发现问题所在。我同意,请参阅:摘录:模式字母通常会重复,因为它们的编号决定了确切的表示方式:可能是EEE MMM dd HH:mm:ss zzz yyyy.+1表示Joda时间建议。这真的需要更多的分享。当然,Joda使用相同的格式字符串,因此问题适用于任何一种情况:@Ray:我几乎在我给出的关于Java的每个日期/时间的回答中都提到了Joda时间:我同意,请参阅:摘录:模式字母通常是重复的,因为它们的数字决定了确切的表示方式:也许它类似于EEE MMM dd HH:mm:ss zzz yyyy。Joda时间建议+1。这真的需要更多的分享。当然,Joda使用相同的格式字符串,因此问题适用于任何一种情况:@Ray:我在Java上给出的每个日期/时间回答中都提到了Joda Time: