在Java中的字符串中的特定位置添加特定字符

时间:2013-11-23 19:53:09

标签: java android string sqlite

我将日期值存储在SQLite数据库中的格式为20121224(以便我可以按日期轻松对数据库进行排序)我的问题是如何从格式“20121224”到“2012/12/24”获取日期“使用java代码从数据库中提取后。

4 个答案:

答案 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的内置DateDateFormat类。

我看到其他人在我打字时打败了我提交答案......这个建议会起作用,但是你有两个SimpleDateFormat对象构建,这不一定是最有效的方法。走。取决于你这样做的频率。

答案 3 :(得分:0)

您可以使用strftime功能

语法:

strftime(timestring, modifiers...)

这将返回根据指定的格式字符串格式化的日期

Example:

    SELECT strftime('%d-%m-%Y') from TABLE_NAME;

Output:

24-11-2013

您可以找到所有格式化程序here