访问按钮不显示不同的日期和时间
在我的程序中,我有一个访问按钮,允许用户查看工程师登录到服务器的次数。该按钮应显示工程师登录的不同日期和时间。但显示的日期和时间与首次登录服务器时的日期和时间相同。任何援助都会有所帮助。访问按钮不显示不同的日期和时间
代码:
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 "";
}
}
你的逻辑必须配合好你会得到什么作为参数,我建议改变你检查什么的顺序,所以你的分支机构会更清楚,更容易执行:
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(“工程师已在这些日期访问:”+ dateFormat.format(storedDate)); 是要打印相同的日期......
你应该有一些阵列,并与指数
System.out.println("Engineer has visited on these dates: " + dateFormat.format(storedDate[i]));
此解决方案无法正常工作,因为我无法在用户注销时打印访问,并且它仍显示与用户首次登录时的日期相同的日期。 '工程师在这些日期访问过:29/04/2016 19:55 工程师已在这些日期访问:29/04/2016 19:55 工程师已在这些日期访问:29/04/2016 19:55' – iiAaronXiX
是... beacuse是相同的...是在一些array ??? –
你的问题并不清楚明白。
您似乎要求收集一个人登录的日期。因此,您需要为每个用户保留一个收集对象。不确定您是否想要仅限日期或日期时间;我会和日期一起去。
我们将使用一个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);
如果你有更多的问题,那么你应该编辑和重写。
您应该只发布与问题有关的代码的相关部分。人们不希望筛选整个程序来尝试找到你所指的部分。 –
更新了帖子。 – iiAaronXiX