我正在尝试在Android中以YYYYMMDD-HHMMSSMilliseconds格式获取时间字符串
Ex:20130312-1723437520(2013年3月12日,17小时23分43秒7520毫秒)
Time now = new Time();
now.setToNow();
String snapshotTime = now.format("yyyyMMdd-HHmmss");
首先,上面的代码甚至无法正常工作。 snapshotTime
始终设置为格式字符串本身。
其次,根据Android documentation,没有办法记录毫秒。
我该如何做到这一点?
答案 0 :(得分:5)
参见SimpleDateFormat类,您可以将Date对象格式化为所需的格式(大写S将给出millis)
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date now = new Date();
String str = fmt.format(now);
那就是说,使用Joda Time通常是一个好主意(Proguard会剥离你不使用的代码)。
答案 1 :(得分:2)
您必须使用strftime格式,如Android文档中所述。
Time now = new Time();
now.setToNow();
String snapshotTime = now.format("%Y%m%d-%H%M%S");
如果你真的想使用毫秒而不是我推荐的SimpleDateFormat。
答案 2 :(得分:1)
尝试将时间作为unix时间戳,以毫秒为单位
long currentTime = System.currentTimeMillis();
或将您的时间转换为毫秒:
long currentTime = now.toMillis(true);
然后您可以将其转换为您想要的日期:
Time now = new Time();
now.set(currentTime);
String snapshotTime = now.format("%Y%m%d-%H%M%S")+""+(currentTime%1000);
没有测试它,但希望它有效:)
答案 3 :(得分:0)
我建议使用this小库,在处理日期时非常有用。看看DateTimeFormatter类。
作为替代方法,使用Calendar和SimpleDateFormater(当然,您必须调整格式字符串,有关符号的说明,请参阅this)
Calendar c = new GregorianCalendar();
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy-SSSS");
String date = sdf.format(c.getTime());
答案 4 :(得分:0)
你可以试试这个:
public static String format() {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd-HHmmssSSS");
Date now = new Date();
return simpleDateFormat.format(now);
}