Android:我将共享首选项中的日期保存为字符串。
Date now = new Date(new Date().getTime());
savePreferences(key, "" + now);
我想从字符串中取回日期格式,怎么做?
答案 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