我想记录System.currentTimeMillis()
用户在我的程序中开始使用时的时间.当他完成后,我会减去当前System.currentTimeMillis()
从start
变量,我想向他们展示使用人类可读的格式经过诸如"XX小时XX分钟,XX秒",甚至是"XX分钟,XX秒",因为它的时间一个小时不太可能带人
最好的方法是什么?
我在服务器中生成的某个日志文件中有毫秒数,我也知道生成日志文件的区域设置,我的问题是将指定格式的毫秒转换为日期.该日志的处理发生在位于不同时区的服务器上.转换为"SimpleDateFormat"程序时,机器的日期是这样的,因为这样的格式化日期并不代表服务器的正确时间.有没有办法优雅地处理这个问题?
long yourmilliseconds = 1322018752992l;
//1322018752992-Nov 22, 2011 9:25:52 PM
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS",Locale.US);
GregorianCalendar calendar = new GregorianCalendar(TimeZone.getTimeZone("US/Central"));
calendar.setTimeInMillis(yourmilliseconds);
System.out.println("GregorianCalendar -"+sdf.format(calendar.getTime()));
DateTime jodaTime = new DateTime(yourmilliseconds,
DateTimeZone.forTimeZone(TimeZone.getTimeZone("US/Central")));
DateTimeFormatter parser1 = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss,SSS");
System.out.println("jodaTime "+parser1.print(jodaTime));
Run Code Online (Sandbox Code Playgroud)
输出:
Gregorian Calendar -2011-11-23 08:55:52,992
jodaTime 2011-11-22 21:25:52,992
Run Code Online (Sandbox Code Playgroud) 类似的问题可能会被问很多次,但我找不到在 UTC 时间要求人类可读格式的问题。
我想将 currentTimeMillis() 转换为人类可读格式,例如“YYMMDDHHMMSS”。我正在尝试使用 SimpleDateFormat 但它返回 LocalTime 而不是 UTC。
long currentTimeMillis = System.currentTimeMillis();
DateFormat dateFormat = new SimpleDateFormat("yyMMddHHmm");
Date date = new Date(currentTimeMillis);
String currentTime = dateFormat.format(date);
Run Code Online (Sandbox Code Playgroud)
这段代码给了我 LocalTime 但我只想要 UTC 时间。