gpt4 book ai didi

java - 为什么 Calendar.getTimeInMillis() 返回负值?

转载 作者:行者123 更新时间:2023-12-01 16:43:33 25 4
gpt4 key购买 nike

我正在读取 TextView 的日期,我想知道 00:00 am 的 UNIX 时间。

使用 API 23。

以下是我实现这一目标的尝试:

String sDate = mainBinding.tvTakeTimeCurrentShownDateDateFormat.getText().toString();
Calendar actuallDate = Calendar.getInstance();

Log.d(TAG, "oc_bt_TakeTime_lastDate: " + sDate.substring(6,8)+ " " + Integer.parseInt(sDate.substring(6,8)));
Log.d(TAG, "oc_bt_TakeTime_lastDate: "+ sDate.substring(3,5) + " " + Integer.parseInt(sDate.substring(3,5)));
Log.d(TAG, "oc_bt_TakeTime_lastDate: " + sDate.substring(0,2) + " " + Integer.parseInt(sDate.substring(0,2)));

actuallDate.clear();
actuallDate.set(Integer.parseInt(sDate.substring(6,8)), (Integer.parseInt(sDate.substring(3,5))-1), Integer.parseInt(sDate.substring(0,2)), 0, 0 ,0);

Log.d(TAG, "oc_bt_TakeTime_lastDate: " + actuallDate.get(Calendar.DAY_OF_MONTH)+actuallDate.get(Calendar.MONTH)+actuallDate.get(Calendar.YEAR));

Log.d(TAG, "oc_bt_TakeTime_lastDate: " + String.valueOf(actuallDate.getTimeInMillis()));

我将其转换为long,因为我认为转换为 int 可能会产生溢出。

结果:

oc_bt_TakeTime_lastDate: 19 19
oc_bt_TakeTime_lastDate: 08 8
oc_bt_TakeTime_lastDate: 24 24
oc_bt_TakeTime_lastDate: 24719
oc_bt_TakeTime_lastDate: -61547472000000

最佳答案

正如您在倒数第二个显示屏上看到的,您正在设置年份 0019,而不是 2019 年。由于 getTimeInMillis 是相对于纪元时间(1970 年 1 月 1 日)设置的,因此您会得到一个负数.

关于java - 为什么 Calendar.getTimeInMillis() 返回负值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57636292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com