[英]Parsed long date returns invalid year params
我有一个长号会转换为日期,
635759785190887215
现在,当我解析此数字时,它给了我一个无效的日期
from logs:
Wed Aug 02 18:48:07 PST 20148395
年份20148395
无效。 可能出什么事了? 该数字是从Web api获取的,并且根据开发人员的介绍,他通过Microsoft.net“ ticks”创建了这些数字。 我正在尝试将其转换为Java日期。 我也尝试过使用在线长距离转换器,但我仍然得到相同的结果。
我正在尝试从现在到很长一段时间的分钟数之间取得差异635759785190887215
这是我的代码:
String dateString = android.text.format.DateFormat.format("MM/dd/yyyy hh:mm:ss a",new Date(pastDateInLong)).toString();
Log.v(TAG,"PAST DATE: "+dateString);
Date lastUpdate = new Date(pastDateInLong);
Date currentDate = new Date();
Log.v(TAG,"Comparing: Now>"+currentDate.toString()+" to "+lastUpdate.toString()+ "= "+(currentDate.getTime()- lastUpdate.getTime()));
if (currentDate.getTime() - lastUpdate.getTime() >= 25*60*1000) {
Log.v(TAG,"more than 25 minutes difference");
}
else{
Log.v(TAG,"not more than 25 minutes difference");
}
好像您为Date
类传递了错误的参数。 java.util.Date
以毫秒为参数。
您可以使用System.currentTimeMillis()
获取当前纪元 (以毫秒为单位)。 尽管如果您创建Date
类的对象而未传递任何参数,则它将返回当前日期。
System.currentTimeMillis()
返回自1970年1月1日以来的毫秒数
例如, Date date = new Date(64060588799000L);
上面的语句返回的日期为格林尼治标准时间3 12月31日23:59:59,您的示例比该时间大〜9924倍。
原来我拥有的值是使用纪元,我要做的就是将1970年1月1日的纪元值减去我的长整数,然后将其除以10,000。
public Date getDateFromTick(long ticks){
final long TICKS_AT_EPOCH = 621355968000000000L;
final long TICKS_PER_MILLIS = 10000;
Date date = new Date((ticks-TICKS_AT_EPOCH)/TICKS_PER_MILLIS);
Log.v(TAG, "DATE:>> (" + ticks + ") to " + date.toString());
return date;
}
希望这对任何人有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.