我正在尝试将System.currentTimeMillis转换为(hh:mm:ss)的当前时间格式。到目前为止,这是我尝试过的方法,但操作不正确。
Long currentTime = System.currentTimeMillis();
int hours;
int minutes;
int seconds;
String getSecToStr = currentTime.toString();
String getTimeStr = getSecToStr.substring(8,13);
seconds = Integer.parseInt(getTimeStr);
minutes = seconds / 60;
seconds -= minutes * 60;
hours = minutes / 60;
minutes -= hours * 60;
String myResult = Integer.toString(hours) + ":" + Integer.toString(minutes) + ":" + Integer.toString(seconds);
System.out.println("Current Time Is: " + myResult);
有什么想法吗?非常感谢!
答案 0 :(得分:3)
您可以使用一些对象来简化操作,例如SimpleDateFormat
和Date
。
首先准备工厂时间:
Long currentTime = System.currentTimeMillis();
使用SimpleDateFormat
选择所需的格式:
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("hh:mm:ss");
创建日期对象:
Date date = new Date(currentTime);
将该格式应用于您的日期对象:
String time = simpleDateFormat.format(date);
登录:
Log.d(TAG, "onCreate: " + time);
结果:
17:05:73
答案 1 :(得分:0)
不需要System.currentTimeMillis();
。使用 java.time 类。
LocalTime.now(
ZoneId.of( "America/Montreal" )
)
.truncatedTo(
ChronoUnit.SECONDS
)
.toString()
12:34:56
现代方法使用 java.time 类。永远不要使用可怕的Date
和Calendar
类。
要获取当前时间,需要一个时区。对于任何给定时刻,一天中的时间(和日期)在全球范围内都不同。
ZoneId z = ZoneId.of( "Australia/Sydney" ) ;
捕获当天的当前时间,该时间是该特定地区(该时区)的人们使用的挂钟时间。获取一个LocalTime
对象。
LocalTime lt = LocalTime.now( z ) ;
如果要使用UTC而不是特定的区域,请传递ZoneOffset.UTC
常量。
很显然,您要跟踪whole second的时间。因此,lop off是小数秒。
LocalTime lt = LocalTime.now( z ).truncatedTo( ChronoUnit.SECONDS ) ;
通过调用toString
生成标准ISO 8601格式的文本。
String output = lt.toString() ;
答案 2 :(得分:0)
以下等效于日期格式HH:mm:ss
String.format("%1$TH:%1$TM:%1$TS", System.currentTimeMillis())