我想为新创建的注释实现日期,问题是它正在更新并且不保留第一个值
var now = new DateTime.now();
var formatter = new DateFormat('yyyy-MM-dd' + ' At ' + 'H:m');
String date;`
date = formatter.format(now);
答案 0 :(得分:0)
我认为您在错误的位置添加了代码。您添加代码的位置可能会一次又一次刷新。调试它可能会对您有所帮助。
答案 1 :(得分:0)
我了解您希望确保您获得了当前时间一次,并保留了该时间,而不会在以后进行更新。为此,您可以使用以下条件包装代码:
if (now == null) {
now = new DateTime.now();
...
}
这只会在您的代码首次运行时获得当前时间一次,并且以后将忽略它。如果您希望该值在活动被破坏/碎片替换后仍然存在,请考虑将值存储在共享的首选项或您选择的其他数据结构上。首次创建活动/片段时,请检查其是否具有值,或者将其保留为空。
答案 2 :(得分:0)
我认为您的代码正在为您正在执行的每个setState设置日期,因此时间在更改。那为什么不在initState
所以在您的State
类
String date;
@override
void initState() {
var now = new DateTime.now();
var formatter = new DateFormat('yyyy-MM-dd' + ' At ' + 'H:m');
date = formatter.format(now);
super.initState();
}
答案 3 :(得分:-1)
尝试此代码。
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val myRunnableThread = CountDownRunner()
var myThread = Thread(myRunnableThread)
myThread.start()
}
fun doWork() {
runOnUiThread {
try {
val dt = Date()
var formatter = SimpleDateFormat("hh:mm:ss a")
tvTime.text = formatter.format(dt)
} catch (e: Exception) {
}
}
}
internal inner class CountDownRunner : Runnable {
// @Override
override fun run() {
while (!Thread.currentThread().isInterrupted) {
try {
doWork()
Thread.sleep(1000) // Pause of 1 Second
} catch (e: InterruptedException) {
Thread.currentThread().interrupt()
} catch (e: Exception) {
}
}
}
}
}