从字符串中获取日期格式

时间:2012-08-16 08:13:19

标签: java string date

Android:我将共享首选项中的日期保存为字符串。

Date now = new Date(new Date().getTime());
savePreferences(key, "" + now);

我想从字符串中取回日期格式,怎么做?

3 个答案:

答案 0 :(得分:2)

尝试此功能。

public static Date convertStringToDate(String startDate) throws ParseException
{
    String myFormatString = // Your stored date format like "dd-mm-yyyy"
    SimpleDateFormat df = new SimpleDateFormat(myFormatString);
    Date startingDate = df.parse(startDate);
    return startingDate;
}

将毫秒转换为日期。

long yourmilliseconds = 1119193190;
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd,yyyy HH:mm");

Date resultdate = new Date(yourmilliseconds);
System.out.println(sdf.format(resultdate));

答案 1 :(得分:1)

我假设您使用的是不推荐使用的java.util.Date。您应该使用GregorianCalendar,然后使用getTimeInMillis()将其保存为较长时间。

这使得使用起来更加容易。 : - )

答案 2 :(得分:0)

您在Date实例上隐式调用toString方法。不幸的是,该类使用较差的格式来呈现字符串。一个主要问题是使用既不标准也不唯一的3字母时区代码(有重复项,如EST和IST)。应该避免这种输出。

确实,应该避免使用所有java.util.Date/Calendar类。相反,请使用Joda-Time或Java 8的新java.time.* classes

此外,其他答案建议写出自纪元以来的毫秒数。你可以这样做,但它含糊不清。什么时代?虽然Unix时代很常见,但java.util.Date和Joda-Time都使用了它,但它不止一个。这个数字的单位时间是多少?旧的Unix风格是存储秒数,而java.util.Date和Joda-Time使用毫秒,而新的Java 8 java.time *类使用纳秒。

明确的方法是以ISO 8601格式存储字符串,最好是UTC(无时区偏移)。然后在运行时的用户界面中,根据需要转换为其他格式和其他时区。

String string = new DateTime( DateTimeZone.UTC ).toString();

要得到......

string: 2013-12-27T07:15:00.395Z