-3

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

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

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

4

3 回答 3

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));
于 2012-08-16T08:15:53.183 回答
1

我假设您使用java.util.Date的是已弃用的。您应该改用GregorianCalendar,然后将其保存为 long using getTimeInMillis().

这使它更容易使用。:-)

于 2012-08-16T08:19:59.970 回答
0

您正在隐式调用toStringDate 实例上的方法。不幸的是,该类使用较差的格式来呈现字符串。一个主要问题是使用的 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();

得到……</p>

string: 2013-12-27T07:15:00.395Z
于 2013-12-27T07:18:28.183 回答