我希望使用calendar对象显示日期。
public abstract class Employee implements EmployeeInfo {
protected String firstName;
protected String lastName;
protected String idNumber;
Calendar birthday = Calendar.getInstance();
protected char gender;
public Employee()
{
firstName = "";
lastName = "";
idNumber = "";
gender = ' ';
birthday.set(Calendar.MONTH, 0);
birthday.set(Calendar.DAY_OF_MONTH, 00);
birthday.set(Calendar.YEAR, 0000);
}
public Employee(String first, String last, String id, char gen, int month, int day, int year)
{
firstName = first;
lastName = last;
idNumber = id;
gender = gen;
birthday.set(Calendar.MONTH, month);
birthday.set(Calendar.DAY_OF_MONTH, day);
birthday.set(Calendar.YEAR, year);
}
public Calendar getBirthday() {
return birthday;
}
public void setBirthday(int month, int day, int year, Calendar birthday) throws ParseException {
birthday = Calendar.getInstance();
birthday.set(Calendar.MONTH, month);
birthday.set(Calendar.DAY_OF_MONTH, day);
birthday.set(Calendar.YEAR, year);
SimpleDateFormat formatted = new SimpleDateFormat("MM/dd/yyyy");
String date = month + "/" + day + "/" + year;
Date birth = formatted.parse(date);
birthday.setTime(birth);
this.birthday = birthday;
}
public String toSring()
{
return "ID Employee Number: " + idNumber + "\n" + "Employee name: " + firstName + " "
+ lastName + "\n" + "Birth date: " + birthday + "\n";
}
public abstract double getMonthlyEarning();
public class Staff extends Employee {
protected double hourlyRate;
public Staff()
{
super();
hourlyRate = 0.0;
}
public Staff(String first, String last, String ID, char gen1, int month, int day, int year, double rate)
{
super(first, last, ID, gen1, month, day, year);
hourlyRate = rate;
}
}
...和...
public class Test {
public static void main(String[] args) {
Employee[] employees = new Employee[2];
employees[0] = new Staff("Minh", "Vu", "123", 'M', 3,06,1997, 50.00);
employees[1] = new Staff("Mike", "Nguyen", "456", 'M', 5,18,1977, 65.00);
for(Employee member : employees)
{
System.out.println(member);
System.out.println("------------------------------------------");
}
}
}
我面临的问题是,为什么以下输出中的出生日期会给我一条未知的、荒谬的长线:
ID员工编号:123
员工姓名:明武
出生日期:java.util.GregorianCalendar[time=?, areFieldsSet=false, areAllFieldsSet=true, lenient=true, zone=sun.util.calendar.ZoneInfo[id="America/Los_Angeles",偏移量=-28800000, dstSavings=3600000, useDaylight=true,过渡=185, lastRur=java.util.SimpleTimeZone[id=America/Los_Angeles,偏移量=-28800000, dstSavings=3600000, useDaylight=true, start York=0, start Mode=3, start Month=2, start Day=8, DayOfWeekWeek=1, start Time=7200000, start TimeMode=0, endMode=3, endMonth=10, endDay=1, endDayOfWeek=1, endTime=7200000, endTimeMode=0]], firstDayOfWeek=1,最小DaysInFirstWeek=1, ERA=1, YEAR=1997, MONTH=3,WEEK_OF_YEAR=6,WEEK_OF_MONTH=2,DAY_OF_MONTH=6,DAY_OF_YEAR=
全职
月薪:8000美元
ID员工编号:456
员工姓名:Mike Nguyen
出生日期:爪哇。util。GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id=“America/Los_Angeles”,offset=-2880000,dstSavings=3600000,useDaylight=true,transitions=185,lastRule=java.util.SimpleTimeZone【id=美国/洛杉矶,偏移量为2880万,DST储蓄为3600万,UsDaDaDayl=真,StartyEA0=0,startMode=3,startMonth=2,startDay=8,StartDayOWeek=1,StartDayOWeek=1,startDay=2,startDay=2,startDay=8,startDay=8,StartDayOOOwwWeek=1,StartDayWeek=1,StartDayWeek=1,StartDayWeek=1,StartDayWeek=1,Start=1,StartDayWeek=1,Start=1,StartDayWeek=1,StartDayE8=1,StartDayWeek=1,Start=1,Start=1,StartDayWeek=1,Start=1,Start=1,StartDayWeek=1,周中的天,月中的上午下午1点,小时2点,日中的小时0点,分钟0点,秒0点,毫秒0点,区域偏移量=-2880000点,DST偏移量=0点]
全职
月薪:10400.0美元
根据我的分析,我认为我必须使用SimpleDataFormat类创建一个对象,并将“MM/dd/yyyy”放入参数中。但是,我必须通过创建日期对象来解析SimpleDataFormat对象。我想使用Calendar类创建日期对象。
当我在调试时,我注意到出生日期的显示是错误的;它打印了我生日对象中的所有内容。我不知道该怎么办。非常感谢您的帮助。:)
因为您正在打印日历对象,所以变量生日是。
您可能希望基于Calendar实现自己的类,但使用一个toString方法,该方法实际上实现了您所期望的功能。
LocalDate birthdate;
…
this.birthdate = LocalDate.of( 1955 , 3 , 17 ); // March 17, 1955.
qwerty1423的答案是正确的,应该被接受。您将看到toString
方法的结果。如果您坚持使用日历
,请学习以所需格式生成字符串。
但你不应该使用日历
。它是一个麻烦的旧日期时间类,现在是遗留的,被java取代。时间课。遗留类是一团乱麻;避开它们。还有java。时间类使用不可变对象,因此是线程安全的。
LocalDate
类表示一个只包含日期的值,不包含一天中的时间和时区。
public abstract class Employee implements EmployeeInfo {
protected String firstName;
protected String lastName;
protected String idNumber;
LocalDate birthday;
// Constructor
public Employee() {
this.firstName = "";
this.lastName = "";
this.idNumber = "";
this.birthday = LocalDate.MIN ; // Or some other arbitrary default value.
}
// Constructor
public Employee( String first, String last, String id, int month, int day, int year )
{
this.firstName = first;
this.lastName = last;
this.idNumber = id;
this.birthdate = LocalDate.of( year , month , day ) ;
}
调用LocalDate::toString
生成标准ISO 8601格式的字符串:YYYY-MM-DD。对于其他格式,请搜索java的堆栈溢出。时间总体安排DateTimeFormatter
类。
要本地化,请指定:
FormatStyle
来确定字符串应该有多长或缩写。区域设置
确定(a)翻译日名、月名等的人类语言,以及(b)决定缩写、大写、标点符号、分隔符等问题的文化规范。例子:
Locale l = Locale.CANADA_FRENCH ;
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate( FormatStyle.FULL ).withLocale( l );
String output = this.birthdate.format( f );
查看此代码在IdeOne上的实时运行。通用域名格式。
生日。toString():1955-03-17
输出:jeudi 17 mars 1955
提示:
>
在订购日期时间部分时,始终使用重要性递减顺序:年、月、日、时、分、秒。这是符合逻辑的、易于遵循的,并且遵循ISO 8601日期时间值标准的风格。因此,不要将int-month、int-day、int-year
作为参数传递,而是传递int-year、int-month、int-dayOfMonth
。
更好的是,只需传递一个LocalDate
对象,而不仅仅是整数。这样做会使代码更加自我记录,确保有效值,并提供类型安全性。
java.time框架内置在Java8及更高版本中。这些类取代了麻烦的旧的遗留日期-时间类,例如java.util.Date
,Calendar
,
现在处于维护模式的Joda-Time项目建议迁移到java.time类。
要了解更多信息,请参阅Oracle教程。并在Stack Overflow中搜索许多示例和解释。规范是JSR 310。
使用符合JDBC 4.2或更高版本的JDBC驱动程序,您可以交换java。时间对象直接与数据库连接。不需要字符串或java。sql.*上课。
从哪里获得java.time课程?
额外的Three Ten项目扩展了java。有额外课程的时间。这个项目是java未来可能增加的一个试验场。时间你可以在这里找到一些有用的类,比如Interval
,YearWeek
,YearQuarter
,等等。
首先,你应该使用java。时间
不是日历。
第二件事是你不必创建你的日期两次(你是在你的setter中做的)。
最后但同样重要的是,您必须在打印日期之前格式化日期(在toString()
方法中)
你的二传手应该是这样的:
public void setBirthday(int month, int day, int year) {
this.birthday.set(Calendar.MONTH, month);
this.birthday.set(Calendar.DAY_OF_MONTH, day);
this.birthday.set(Calendar.YEAR, year);
}
或者更好:
public void setBirthday(Calendar birthday) {
this.birthday = birthday;
}
这就是你的toString()
方法的样子:
public String toString(){
return "ID Employee Number: " + idNumber + "\n" + "Employee name: " + firstName + " "
+ lastName + "\n" + "Birth date: " + formatter.format(birthday) + "\n";
}
因此,您还需要在代码中添加以下内容:
private final static SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
问题内容: 我有一个电影课,里面有开始日期,持续时间和结束日期。开始和停止日期是日期对象(私有日期startDate …)(这是一个分配,因此我无法更改),现在我想通过将持续时间(以分钟为单位)添加到startDate中来自动计算stopDate。 据我所知,不赞成使用Date的时间操作功能,因此是不好的做法,但另一方面,我看不到将Date对象转换为日历对象以操纵时间并将其重新转换为Date对象的
我创建了新的SimpleDataFormat对象,它将给定字符串解析为日期对象。日期格式如下: 我将此日期设置为日历实例,如下所示: 现在我从这个日历中获取一周中的哪一天。它给出了错误的值。 它给出的输出是7,即周六,但预期值是5,即周四。有什么问题吗?
在JS中,如果我将一个字符串记录到控制台,它是否没有正确显示? 后果 那么为什么显示的是[object],而不是值呢?它就像是在附加字符串的情况下更改类型?
如何更改日历视图特定日期的颜色?我正在创建一个简单的应用程序,可以在日历上添加事件,我想突出显示有事件的日期。有人能告诉我怎么做吗?如果不可能,请给我一些其他的建议。
我使用了以下库作为日历,但它显示的星期的第一天是星期一,我想以星期日开始一天。 https://github.com/applandeo/material-calendar-view 我修改了相应的代码,但它仍然显示日期,因此星期一是第一天。
问题内容: 这是关于如何在django支持的网站中使用jQuery 。 是 我正在使用。 我正在使用和创建成功显示日期。 但未显示日期选择器图标。我正在使用Django模型形式。 问题答案: 你可以使用来将a传递给表单,该表单将在html中呈现。然后,将读取该内容以呈现功能。 这是一个例子: …或使用ModelForm时通过Meta类中的属性: 现在在模板中: