我正在尝试编写Java代码作为我的项目的一部分来获取进程的当前时间,然后我需要为它添加一个固定的超时时间。这个新时间必须与我上面的时间进行比较,并根据这个时间做出决定。我无法为当前时间添加时间并进行比较。任何人都可以建议一种方式来帮助我吗?
这是我的代码:
public class SessionDetails
{
public String getCurrentUtcTimestamp() {
TimeZone timeZone = TimeZone.getTimeZone("UTC:00");
DateFormat dateFormat = DateFormat.getDateTimeInstance();
dateFormat.setTimeZone(timeZone);
timeStamp = dateFormat.format(new Date());
return timeStamp;
}
public void createSession()
{
int value = getsession();
String timeStamp = getCurrentUtcTimestamp() ;
System.out.println("New session Details :");
System.out.println("session value:" + value);
System.out.println("Time of creation :" + timeStamp );
}
public boolean checkTimeout(int value)
{
private static long c_Timeout = 10000;
String currentTime = getCurrentUtcTimestamp() ;
if ( currentTime > timeStamp + c_Timeout ) //failing to implement this logic efficiently .please do suggest a way.Thanku..
System.out.println("Sorry TimeOut");
else
System.out.println("Welcome");
}
}
答案 0 :(得分:3)
你真的需要将时间戳存储为字符串吗?我建议使用long
,例如调用System.currentTimeMills()
的结果...然后将其格式化为字符串仅用于诊断目的。比较long
值非常简单:)
或者,使用Joda Time并将时间戳保持为Instant
值。这样可以简化格式设置,您可以使用isAfter
,isAfterNow
等进行比较。
答案 1 :(得分:0)
您永远不想使用String
来存储/处理精确的日期。
通常您希望使用Date
,Calendar
甚至是更现代的Java日期/时间API,例如Joda Time或JSR-310(reference implementation here)。
如果您只是想使用简单的本地时间戳,那么long
就足够了:
long currentTime = System.currentTimeMillis();
long
的优点是你可以像使用任何其他数字基元类型一样使用所有正常操作(加法,减法,相等检查,小于检查)。
答案 2 :(得分:0)
简化您的方法返回