如何格式化时间,包括毫秒

时间:2013-03-11 15:57:41

标签: java android

我正在尝试在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,没有办法记录毫秒。

我该如何做到这一点?

5 个答案:

答案 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);
    }