import java.util.GregorianCalendar ;
public class MyCalendar extends GregorianCalendar {
public static void main(String[] args) {
MyCalendar a = new MyCalendar();
System.out.println(a.getCurrenttime());
}
public String getCurrenttime(){
String time= YEAR+"-"+(MONTH+1)+"-"+DATE+"-"+HOUR+"-"+MINUTE+"-"+SECOND;
return time;}}
然而,它总是显示同一时间。我做错了什么。
P.S。它不打算直接使用像gettime()这样的命令。字符串应保留在那里。
答案 0 :(得分:0)
使用YEAR,MONTH ......等等,在这里您将访问从GregorianCalendar类继承的静态字段。 但是,您必须使用这些变量访问日历的字段,如下所示:
public String getCurrenttime(){
String time= this.get(YEAR)+"-"+(this.get(MONTH)+1)+"-"+
this.get(DATE)+"-"+this.get(HOUR_OF_DAY)+"-"+this.get(MINUTE)+"-"+this.get(SECOND);
return time;
}
答案 1 :(得分:0)
你的标题是“申请GregorianCalendar
”,而这不是我在这个答案中所做的。虽然mustabelMo’s answer是正确的,但我想向您展示如何最好地解决您的任务问题,第一点是我建议您不要使用长期过时的GregorianCalendar
类。今天我们在the modern Java date and time API known as java.time
or JSR-310中做得更好。根据您的需要,您可以使用LocalDateTime
:
import java.time.ZoneId;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class MyCalendar {
public static void main(String[] args) {
MyCalendar a = new MyCalendar();
System.out.println(a.getCurrentTime());
}
private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("u-M-d-H-m-s");
private LocalDateTime now = LocalDateTime.now(ZoneId.systemDefault());
private String getCurrentTime() {
return now.format(formatter);
}
}
该程序打印类似
的内容2017-11-15-11-59-1
其他注意事项:
首选组合而不是继承。不是从用于获取日历数据的任何类继承,而是将类的对象封装在类中更好的样式。
使用格式化程序将日期时间格式化为字符串,如果您想要不同的格式,则更方便,更容易更改。例如,许多人希望总是以两位数打印分钟和秒,必要时前导零。要获得这个,只需使用两种格式的模式字母而不是一种:
private static final DateTimeFormatter formatter
= DateTimeFormatter.ofPattern("u-M-d-H-mm-ss");
现在输出就像
2017-11-15-12-03-01
在代码中我使用ZoneId.systemDefault()
来获取JVM的时区设置。这很脆弱,可能会在您背后更改,恕不另行通知。如果可以,请选择 region / city 格式的特定时区,例如:
private LocalDateTime now = LocalDateTime.now(ZoneId.of("Asia/Hong_Kong"));
尽管名称getCurrentTime()
为您提供了创建MyCalendar
对象的时间,但不是调用方法的时间。如果您更喜欢后者,只需在方法中创建一个新的LocalDateTime
对象。
您可能更喜欢使用ZonedDateTime
或OffsetDateTime
而不是LocalDateTime
,因为它们分别包含时区和与UTC的偏移。即使您没有立即使用此信息,也常常将这些信息丢弃。