Android:我将共享首选项中的日期保存为字符串。
Date now = new Date(new Date().getTime());
savePreferences(key, "" + now);
我想从字符串中取回日期格式,怎么做?
试试这个功能。
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));
我假设您使用java.util.Date
的是已弃用的。您应该改用GregorianCalendar,然后将其保存为 long using getTimeInMillis()
.
这使它更容易使用。:-)
您正在隐式调用toString
Date 实例上的方法。不幸的是,该类使用较差的格式来呈现字符串。一个主要问题是使用的 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