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();
}

+ Recent posts