Skip to content

Instantly share code, notes, and snippets.

@monodyle
Last active January 3, 2020 09:06
Show Gist options
  • Save monodyle/384a1a715767f56b367a412187ad46e7 to your computer and use it in GitHub Desktop.
Save monodyle/384a1a715767f56b367a412187ad46e7 to your computer and use it in GitHub Desktop.
Test: /NgayThangNam.php?ngay=[int]&thang=[int]&nam=[int]
<?php
class NgayThangNam {
protected $ngay, $thang, $nam;
function __construct($ngay = 1, $thang = 1, $nam = 2020)
{
if (is_string($ngay) || is_string($thang) || is_string($nam)) {
print("Dữ liệu nhập vào không hợp lệ");
return;
}
if ($ngay <= 0) {
print("Ngày không được nhỏ hơn hoặc bằng 0");
return;
} else if ($thang <= 0) {
print("Tháng không được nhỏ hơn hoặc bằng 0");
return;
} else if ($thang > 12) {
print("Tháng không được lớn hơn 12");
return;
} else {
$this->thang = $thang;
if ($this->ngayTrongThang($thang, $this->namNhuan()) < $ngay) print("Ngày trong tháng " . $thang . " không được lớn hơn" . $d);
else $this->ngay = $ngay;
}
$this->nam = $nam;
}
private static function ngayTrongThang($month = 1, $nhuan = false) {
return [1 => 31, 2 => $nhuan ? 29 : 28, 3 => 21, 4 => 30, 5 => 31, 6 => 30, 7 => 31, 8 => 31, 9 => 30, 10 => 31, 11 => 30, 12 => 31][$month];
}
function namNhuan() {
return !($this->nam % 4) && ($this->nam % 100 || !($this->nam % 400));
}
function ngayTiepTheo() {
if ($this->ngay + 1 <= $this->ngayTrongThang($this->thang, $this->namNhuan())) {
return new self($this->ngay + 1, $this->thang, $this->nam);
} else {
if ($this->thang < 12) {
return new self(1, $this->thang + 1, $this->nam);
} else {
return new self(1, 1, $this->nam + 1);
}
}
}
function in() {
echo $this->ngay . '/' . $this->thang . '/' . $this->nam;
}
}
$test = new NgayThangNam($_GET['ngay'], $_GET['thang'], $_GET['nam']);
$test->in();
echo '<br />';
$test->ngayTiepTheo()->in();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment