Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何知道日期是否在前x分钟?_Java_Android_Date_Kotlin_Simpledateformat - Fatal编程技术网

Java 如何知道日期是否在前x分钟?

Java 如何知道日期是否在前x分钟?,java,android,date,kotlin,simpledateformat,Java,Android,Date,Kotlin,Simpledateformat,我有这样一个ISO字符串日期:2019-12-17 15:14:29.198Z 我想知道这个日期是否在从现在起的前15分钟内。 是否可以使用SimpleDataFormat val dateIso = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.FRENCH).parse(isoString) 这是你想要的吗 int xMinutes = 10 * 60 * 1000; long dateIsoinMillis = dateI

我有这样一个ISO字符串日期:
2019-12-17 15:14:29.198Z

我想知道这个日期是否在从现在起的前15分钟内。
是否可以使用
SimpleDataFormat

val dateIso = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.FRENCH).parse(isoString)
这是你想要的吗

int xMinutes = 10 * 60 * 1000;
long dateIsoinMillis = dateIso.getTime();
long xMinsAgo = System.currentTimeMillis() - xMinutes;
if (dateIsoinMillis < xMinsAgo) {
    System.out.println("searchTimestamp is older than 10 minutes");
}
int xMinutes=10*60*1000;
long-dateIsoinMillis=dateIso.getTime();
long xMinsAgo=System.currentTimeMillis()-xMinutes;
如果(日期单位为毫秒
java.time.Instant
使用类表示UTC中的某个时刻

要进行分析,请按照标准将空格替换为
T

Instant instant = Instant.parse( "2019-12-17 15:14:29.198Z".replace( " " , "T" ) ;
确定中的当前力矩

15分钟前确定。调用日期时间数学的
加…
/
减…
方法

Instant then = now.minusMinutes( 15 ) ;
应用你的测试。这里我们使用半开放的方法,其中开始是包含的,而结束是独占的

对于较旧的Android,添加包装库的库。Android 26+捆绑了java.time类

如果您正在做很多这方面的工作,请将库添加到您的项目中(可能不适合Android,不确定)。这为您提供了类及其方便的比较方法,例如


如果您已经知道每次访问程序时的参考日期,则可以使用java.util.Calendar

boolean isBefore;
long timeToCheck = 15*60*1000; //15 minutes.
Calendar calendar = Calendar.getInstance(), calendar2 = Calendar.getInstance();
calendar.set(Calendar.DATE, yourDay);
calendar.set(Calendar.HOUR_OF_DAY, yourHour);
calendar.set(Calendar.MINUTE, yourMinute);
calendar.set(Calendar.SECOND, yourSecond);

if (calendar.before(calendar2)){
  long timeInMillis = calendar2.getTimeInMillis() - calendar.getTimeInMillis();
  if ( timeInMillis >= timeToCheck ) isBefore = true;
  else isBefore = false;
}

是UTC中的日期吗?也许这将有助于您<代码> SimpleDateFormat <代码>现在是遗留的,几年前JSR 310中定义的现代JavaTimes类取代了。您可能想尝试使用Android TruteEn DealDealSaveas作为一个考虑,抛开长期过时和臭名昭著的麻烦<代码> SimpleDateFormat <代码>和朋友,并添加到Android项目中,以便使用现代java日期和时间API
java.time
。使用.FYI更好,有严重缺陷的日期时间类,如,和
java.text.simpleDataFormat
,现在被java 8和更高版本中内置的类所取代。
boolean isRecent = 
    ( ! instant.isBefore( then ) )  // "Not before" means "Is equal to or later".
    && 
    instant.isBefore( now )         
;
Interval.of( then , now ).contains( instant )
boolean isBefore;
long timeToCheck = 15*60*1000; //15 minutes.
Calendar calendar = Calendar.getInstance(), calendar2 = Calendar.getInstance();
calendar.set(Calendar.DATE, yourDay);
calendar.set(Calendar.HOUR_OF_DAY, yourHour);
calendar.set(Calendar.MINUTE, yourMinute);
calendar.set(Calendar.SECOND, yourSecond);

if (calendar.before(calendar2)){
  long timeInMillis = calendar2.getTimeInMillis() - calendar.getTimeInMillis();
  if ( timeInMillis >= timeToCheck ) isBefore = true;
  else isBefore = false;
}