-1

我正在尝试在 Android 中获取格式为 YYYYMMDD-HHMMSSMilliseconds 的时间字符串

例如:20130312-1723437520(2013 年 3 月 12 日,17 小时 23 分 43 秒 7520 毫秒)

Time now = new Time();
now.setToNow();
String snapshotTime = now.format("yyyyMMdd-HHmmss");

首先,上面的代码甚至不能正常工作。snapshotTime始终设置为格式字符串本身。

其次,根据Android 文档,没有办法记录毫秒。

我怎样才能做到这一点?

4

5 回答 5

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 会剥离你不使用的代码)。

于 2013-03-11T16:06:05.133 回答
2

如 Android 文档中所述,您必须使用 strftime 格式。

Time now = new Time();
now.setToNow();
String snapshotTime = now.format("%Y%m%d-%H%M%S");

如果你真的想使用毫秒,我会推荐 SimpleDateFormat。

于 2013-03-11T16:09:25.340 回答
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);

没有测试它,但希望它有效:)

于 2013-03-11T16:23:31.417 回答
0

我建议使用这个小库,它在处理日期时非常有用。看看 DateTimeFormatter 类。

作为替代使用 Calendar 和 SimpleDateFormater (当然,您必须调整格式字符串,有关符号的说明,请参见this )

Calendar c = new GregorianCalendar();
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy-SSSS");
String date = sdf.format(c.getTime());
于 2013-03-11T16:00:37.840 回答
0

你可以试试这个:

public static String format() {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd-HHmmssSSS");
        Date now = new Date();
        return simpleDateFormat.format(now);
    }
于 2013-03-11T16:09:20.677 回答