我将日期时间作为文本以SQLite数据库中 dd-MM-yyyy hh:mm:ss 的格式存储。我想将它转换为相同格式的日期对象。我只能将其转换为 Mon Jun 16 01:35:38 GMT + 05:30 的格式。如何将其作为所需格式的Date
对象?这里TSArray[]
包含字符串格式的日期:
int dateArraySize=TSArray.length;
Date dateArray[]=new Date[TSArray.length];
SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");
for (int i=0;i<TSArray.length;i++) {
try {
//converting String date to Date
Date result=df.parse(TSArray[i]);
dateArray[i]= result;
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 0 :(得分:0)
Date
对象只是代表一个时刻(具体地说,是epoch之前或之后的毫秒数) - 它们不存储有关它们应如何显示的任何信息,也不存储他们应该。格式化日期纯粹是为了显示目的,并且是DateFormat
类层次结构的关注,并且不应该在显示时间之前完成(除非你有一个令人信服的理由比这更早做,但我可以'想到好一个。)
可以说没有什么可以阻止你在DateFormat
旁边发送Date
个对象,但如果你首先正确地将代码国际化,那么你永远不需要这样做。
不应执行此操作的一个原因是区域日期格式的差异。如果您向我提供了日期03/07/2014
,我会将其视为2014年7月的3 rd ,因为在英国我们将日期格式设为DD/MM/YYYY
。向美国某人提出同一日期,他们会将其视为2014年3月 th ,因为美国的日期通常为MM/DD/YYYY
。
数据库和服务器不需要知道有关客户端的任何区域设置信息,它们应该在适当的时候提供数据请求,并让客户端( 知道区域设置信息)适当地格式化数据。
<强> TL; DR 强>:
您不能,因为Java Date
对象不存储显示格式规则。
当您使用AChartEngine时,您应该能够通过使用TimeChart
并通过调用图表的setDateFormat(String)
方法传递日期格式掩码来实现您所追求的目标。
答案 1 :(得分:-1)
java.sql.date中的数据库返回值n java默认使用的是java.util.date。 Java.util.date转换为java.sql.Date,如下面给出的..
Calendar cal = Calendar.getInstance();
Java.sql.Date sqlDate = new java.sql.Date(cal.getTimeInMillis());