在我的程序中,我有一个访问按钮,允许用户查看工程师登录服务器的次数。该按钮应显示工程师登录的不同日期和时间。但是它显示与工程师第一次登录服务器时相同的日期和时间。任何帮助都会有所帮助。
代码:
public String visits(String myCookie){
if(numberOfVisits == 0){
return "Engineer has not visited this machine";
}else if(myCookie.equals(storedCookie)){
for(int i = 0; i < numberOfVisits; i++){
System.out.println("Engineer has visited on these dates: " + dateFormat.format(storedDate));
}
return storedCookie;
}else{
for(int i = 0; i < numberOfVisits; i++){
System.out.println("Engineer has visited on these date: " + dateFormat.format(storedDate));
}
return "";
}
}
答案 0 :(得分:0)
你的逻辑必须与你得到的参数一致我建议改变你检查的顺序,这样你的分支就会更清晰,更容易执行:
public String visits(String myCookie){
if(myCookie.equals(storedCookie)){
if(numberOfVisits == 0)
return "Engineer has not visited this machine";
for(int i = 0; i < numberOfVisits; i++){
System.out.println("Engineer has visited on these dates: " + dateFormat.format(storedDate));
}
return storedCookie;
}
return "";
}
我不知道这个storedDate变量 但是这里: System.out.println(&#34;工程师在这些日期访问过:&#34; + dateFormat.format(storedDate)); 将打印相同的日期......
你应该在某个数组中使用索引
System.out.println("Engineer has visited on these dates: " + dateFormat.format(storedDate[i]));
答案 1 :(得分:0)
你的问题不明确。
您似乎要求收集某人登录的日期。因此您需要为每个用户保留一个收集对象。不确定您是想要仅限日期还是日期时间;我会选择日期时间。
我们将使用List
按时间顺序保留它们。
我们将使用Instant
类,在UTC时间轴上的一个时刻,分辨率为纳秒。 Java 8及更高版本中内置的java.time框架的一部分。
List<Instant> logins = new ArrayList<>();
当该用户登录时,添加当前时刻。
logins.add( Instant.now() );
如果要显示这些收集的值,只需循环。 toString
方法默认生成标准ISO 8601格式的字符串。
System.out.println( "You logged in at these date-times:" );
for( Instant instant:logins ) {
String output = instant.toString();
System.out.println( output );
}
您可以应用time zone来调整用户期望的wall-clock time。
ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );
要使用其他格式,请参阅java.time.format包。您甚至可以让java.time自动为您输出本地化输出。为人类语言指定Locale
,以翻译日/月的名称,以及期间与逗号的文化规范等。
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.MEDIUM );
formatter = formatter.withLocale( Locale.CANADA_FRENCH );
在循环中使用该格式化程序。
String output = zdt.format( formatter );
如果您对问题有更多了解,那么您应该编辑并重写。