我将日期值存储在SQLite数据库中的格式为20121224(以便我可以按日期轻松对数据库进行排序)我的问题是如何从格式“20121224”到“2012/12/24”获取日期“使用java代码从数据库中提取后。
答案 0 :(得分:0)
你可以这样做。
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test003 {
public static void main(String[] args) throws Exception {
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd");
String s = "20121224";
Date dt = sdf1.parse(s);
System.out.println(sdf2.format(dt));
}
}
答案 1 :(得分:0)
private static final String DATE_FORMAT = "yyyy/MM/dd";
private static final SimpleDateFormat dateFormat = new
SimpleDateFormat(DATE_FORMAT);
public static long dateAsLong(Calendar cal){
return Long.parseLong(dateFormat.format(cal.getTime()));
}
public static Calendar dateAsCalendar(long l){
try {
Calendar c = Calendar.getInstance();
c.setTime(dateFormat.parse(String.valueOf(l)));
return c;
} catch (ParseException e) {
return null;
}
}
希望这有帮助。
答案 2 :(得分:0)
在Java中,String
是不可变的,因此您无法修改从数据库中返回的String
;你必须做一个新的。最简单的方法,如果您的日期保证是yyyyMMdd格式(即,您不将1月存储为“01”),并且您只想让另一端String
出来:
StringBuilder date = new StringBuilder();
date.append(dateStr.substring(0,4));
date.append("/");
date.append(dateStr.substring(4,6));
date.append("/");
date.append(dateStr.substring(6,8));
// use date.toString() wherever you need it
但是,我建议您查看how SQLite recommends you store dates。这些是常见的格式,允许您以更传统和方便的方式使用Java的内置Date
和DateFormat
类。
我看到其他人在我打字时打败了我提交答案......这个建议会起作用,但是你有两个SimpleDateFormat
对象构建,这不一定是最有效的方法。走。取决于你这样做的频率。
答案 3 :(得分:0)
您可以使用strftime
功能
语法:
strftime(timestring, modifiers...)
这将返回根据指定的格式字符串格式化的日期
Example:
SELECT strftime('%d-%m-%Y') from TABLE_NAME;
Output:
24-11-2013
您可以找到所有格式化程序here