【问题标题】:Convert String to timestamp and compare with current system time将字符串转换为时间戳并与当前系统时间进行比较
【发布时间】:2015-11-11 03:47:37
【问题描述】:

这是我的字符串:

2015,10,10,4,22,51

如何将此字符串转换为时间戳,例如:

144712​​5771290

比较

long currentTime = System.currentTimeMillis();

或者有什么建议可以与当前系统时间进行比较?

【问题讨论】:

  • 时间戳没有时区。 1447208700000 是 2015 年 11 月 11 日格林威治标准时间 02:25(您的服务器在撒谎)
  • hmm 实际上我将时间设置为 GMT+0 的 03:25 并发送到服务器。那么如何处理这个字符串:LocalDate(2015,10,11,3,25,0) 到日期并与当前时间进行比较?我的意思是不是手动的,比如比较每小时、每分钟、....
  • 看来问题是您服务器上的时间不对。
  • 我想是的,也许我应该获取 LocalDate 的值并找到与 currentTime 比较的解决方案

标签: android


【解决方案1】:

我认为这会对您有所帮助:

String timestamp = "2015,10,10,04,22,51";
DateFormat df = new SimpleDateFormat("yyyy,MM,dd,hh,mm,ss");
Date parsedDate = df.parse(timestamp);

并将其与当前日期进行比较:

DateFormat dateFormat = new SimpleDateFormat("yyyy,MM,dd,hh,mm,ss");
Date date = new Date();

这里是如何比较:

public Date compareTime(Date date) {    
Calendar cal = Calendar.getInstance();  
cal.setTime(date);  
cal.set(Calendar.HOUR_OF_DAY, 0);  
cal.set(Calendar.MINUTE, 0);  
cal.set(Calendar.SECOND, 0);  
cal.set(Calendar.MILLISECOND, 0);  
return cal.getTime(); 
}

然后像这样使用上面的方法:

if (compareTime(parsedDate).equals(date)

使用Date 类比较日期的另一种方法:

switch (date.compareTo(parsedDate)) {
case -1:  Log.i("CompareDates","today is sooner than parsedDate");  break;
case 0:   Log.i("CompareDates","today and parsedDateare equal");  break;
case 1:   Log.i("CompareDates","today is later than parsedDate");  break;
default:  Log.i("CompareDates","Invalid results from date comparison"); break;
}

【讨论】:

  • 除了没有,因为正如您在问题中看到的,月份值 10 是 11 月,看来服务器使用与 java 相同的从 0 开始的月份编号。意思是a/你可以有一个不会被正确解析的0值,b/你需要在所有其他情况下加1。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多