- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
如何从 SystemClock.elapsedRealTime()
转换到可以在 textview 中显示的人类可读的 CharSeq?
最佳答案
tl;博士
Duration.ofMillis( // Represent a span of time on scale of hours-minutes-seconds, unattached to the timeline.
SystemClock.elapsedRealTime() // 441_000L as an example.
)
.toString() // Generate a String in standard ISO 8601 format.
PT7M21S
PnYnMnDTnHnMnS
开头标有
P
而一个
T
将年-月-日部分与时-分-秒部分分开。例如:
PT30M
= 半小时 PT8H30M
= 八个半小时 P3Y6M4DT12H30M5S
表示“三年六个月四天十二小时三十分五秒”的持续时间。 P
开头。如“期间”。这就是生活。
Period
年月日Duration
时分秒 SystemClock.elapsedRealTime()
的输出是
long
计算经过的毫秒数的整数。所以我们想可能想使用
Duration
类(class)。
long millis = SystemClock.elapsedRealTime() ;
Duration d = Duration.ofMillis( millis ) ;
Duration d = Duration.ofMillis( 441_000L ) ;
441_000L
,我们得到 7 分 21 秒。
String output = d.toString() ; // Generate standard ISO 8601 string.
PT7M21S
Duration
目的。
Duration d = Duration.parse( "PT7M21S" ) ;
00:07:21
),因为我已经看到歧义会导致用户混淆。但是如果您的用户群不适合标准格式,您可以生成其他字符串。
to…Part
检索七和二十一的方法。
int minutesPart = d.toMinutesPart() ; // The whole-minutes portion.
int secondsPart = d.toSecondsPart() ; // The whole-seconds portion.
long millis = d.toMillis() ; // Not the part, but the entire span of time in terms of milliseconds.
java.util.Date
,
Calendar
, &
SimpleDateFormat
.
java.sql.*
类。
Interval
,
YearWeek
,
YearQuarter
, 和
more .
Interval
,
Duration
, 和
Period
.最后一个,
Period
, 表示描述为天数、小时数等的时间跨度。它与这种特殊的 ISO 8601 格式并行。
Period
类还解析并生成 ISO 8601 格式的字符串。 Joda-Time 可以在 Android 中运行,它已经很老旧并且非常流行,可以替代臭名昭著的 java.util.Date/.Calendar 类。
Period
类需要一个
long
整数作为持续时间的毫秒计数。正是我们需要的,如
SystemClock.elapsedRealtime()
自机器启动以来,以毫秒为单位为我们提供计数。
long machineUptimeMillis = SystemClock.elapsedRealtime() ;
Period machineUptimePeriod = new Period( machineUptimeMillis );
String output = machineUptimePeriod.toString(); // Ex: P3DT2H15M37.123S
long
s 在减法中。
long start = SystemClock.elapsedRealtime() ;
// … Perform some operation …
long stop = SystemClock.elapsedRealtime() ;
long elapsedMillis = stop - start ;
Period elapsedPeriod = new Period( elapsedMillis );
P
和/或
T
并使用小写字母以获得更好的可读性。
String output = elapsedPeriod.toString().replace( "P" , "" ).replace( "T", " " ).toLowerCase() ;
3y6m4d 12h30m5s
.
Period
值,例如“5 年零 2 个月”。
PeriodFormatter formatter = PeriodFormat.wordBased( Locale.CANADA_FRENCH ) ;
String output = formatter.print( elapsedPeriod ) ;
PeriodFormatterBuilder
创建您自己的自定义格式.
PeriodFormatter yearsAndMonths = new PeriodFormatterBuilder()
.printZeroAlways()
.appendYears()
.appendSuffix(" year", " years")
.appendSeparator(" and ")
.printZeroRarelyLast()
.appendMonths()
.appendSuffix(" month", " months")
.toFormatter() ;
关于Android:如何从 SystemClock.elapsedRealTime 转换为人类可读的 CharSeq?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31574615/
我正在尝试为安卓游戏编写游戏循环,但是,我在尝试访问当前时间时遇到了这个错误(你知道,用于 FPS 管理等) “SystemClock() 在‘android.os.SystemClock’中不公开。
在 View 类中,我重写了 onFinishInflate() 以调用定义了一些监听器的 setupEventHandlers()。例如: setDate.setOnClickListener( n
我希望我的程序等待 1000 毫秒并更改按钮的标题...但是程序以更改后的名称出现 package com.catchthebutton; import android.app.Activity; i
我想让 Toast 出现,然后让 sleep 运行。 如果我这样做,Toast 会在 sleep 后出现,但我希望反过来。有人有建议吗?这是我的代码 switch (checkedRadioButto
Android docs on uptimeMillis()说: Returns milliseconds since boot, not counting time spent in deep sl
我对我从给出的一些答案中检索到的一段代码有一些疑问,这些代码用于避免用户多次单击同一个按钮。有人可以向我解释这部分代码的作用和示例吗? 代码是 private long mLastClickTime
我有一个 android 服务负责更新时钟并在不同时间执行特定任务(如播放歌曲)。我尝试使用 Timer.scheduleAtFixedRate(new MyTask(), 0, 1000L) 之类的
对于 SystemClock.uptimeMillis() 方法,Android 文档说“uptimeMillis() 是从系统启动后以毫秒计算的”。 “自系统启动以来”是什么意思?是按下电源按钮后的
根据 API 文档以及之前的 SO threads , SystemClock.elapsedRealtime() 应该即使在设备处于 sleep 状态时也能保持准确的时间。这不是我观察到的。 我编写
我正在尝试编写一个能够与用户输入同步播放 MIDI 文件的音乐应用程序。我已经创建了自定义 View 、播放声音和读取 MIDI 数据。我在 View 的 onDraw() 方法中运行 MIDI 数据
我的应用程序中有一个 TimePicker,可以选择播放歌曲的时间量,我在使用 CountDownTimer 获取剩余时间以正确显示时遇到问题>我正在使用,当然,一切都在幕后以毫秒为单位进行,我认为我
我需要了解手机的开机时间。为此,我调用了 android.os.SystemClock.uptimeMillis()。但是,这会引发 UnsatisfiedLinkError。关于问题可能是什么的任何
如何从 SystemClock.elapsedRealTime() 转换到可以在 textview 中显示的人类可读的 CharSeq? 最佳答案 tl;博士 Duration.ofMillis(
我正在尝试使用 these instructions 在 dalvikvm 上运行一个简单的命令行 java 应用程序。我以 root 身份运行,所以这不是权限问题。 这是应用程序代码: import
我想在翻转旧图像后的 3 秒内在 ImageView 中显示其他图像。代码: OnClickListener oc = new OnClickListener() { @Override pu
为了同步/排队访问共享资源,我将使用 Semaphore ,在等待循环的帮助下。 为了不遇到 CPU Hook ,我想在 while 循环中稍微sleep()。 我搜索了 http://develop
当尝试显示我的程序的运行时间时,单击按钮后我收到一个非常高的值“119660898”。如果我等待 3 秒并重新单击按钮,总数将按预期增加大约 3 秒。 谁能解释一下为什么初始值这么高?下面是我在按钮中
我想通过这个截屏视频学习 IOC 原理 Inversion of Control from First Principles - Top Gear Style 我尝试按照截屏视频进行操作,但在 Aut
我在 Android 应用程序中模拟 GPS 位置 myMockLocationProvider.pushLocation(37.422, -122.084); 我收到以下错误: java.lang.
我需要保留应用程序启动后的时间。即使设备进入休眠模式,时间也需要保持滴答作响。 在 Android 中,有 SystemClock.ElapsedRealtime() 它在 sleep 时保持滴答作响
我是一名优秀的程序员,十分优秀!