class Spacecraft {
String name;
DateTime? launchDate;
// Read-only non-final property
int? get launchYear => launchDate?.year;
// Constructor, with syntactic sugar for assignment to members.
Spacecraft(this.name, this.launchDate) {
// Initialization code goes here.
}
// Named constructor that forwards to the default one.
Spacecraft.unlaunched(String name) : this(name, null);
// Method.
void describe() {
print('\n');
print('Spacecraft: $name');
// Type promotion doesn't work on getters.
var launchDate = this.launchDate;
if (launchDate != null) {
int years = DateTime.now().difference(launchDate).inDays ~/ 365;
print('Launched: $launchYear ($years years ago)');
} else {
print('Unlaunched');
}
}
}
void main() {
Spacecraft spacecraft = Spacecraft('ijpark', null);
spacecraft.describe();
var now = DateTime.now(); //현재시간 구하기
spacecraft = Spacecraft('ijpark2', now);
spacecraft.describe();
var berlinWallFell = DateTime.utc(1989, 11, 9); //특정일자의 UTC시간
spacecraft = Spacecraft('ijpark3', berlinWallFell);
spacecraft.describe();
var moonLandingTime = DateTime.parse("1969-07-20 20:18:04z");
spacecraft = Spacecraft('ijpark4', moonLandingTime);
spacecraft.describe();
}