30/09/2018, 18:17
Nên viết if lồng nhau hay if else hơn
Mình muốn chuyển giờ từ định dạng 24-hour sang 12-hour và mình có 2 đoạn code Java có chức năng tương tự như sau.
1.
if (hour <= 11) { // for morning
amPm = "AM";
if (hour == 0) // 12 AM
hour = 12;
}
else {
amPm = "PM";
if (hour >= 13)
hour -= 12;
}
if (hour == 0) {
amPm = "AM";
hour = 12;
} else if (hour <= 11) {
amPm = "AM";
} else if (hour == 12) {
amPm = "PM";
} else {
amPm = "PM";
hour -= 12;
}
Đoạn thứ nhất thì có vẻ ngắn hơn, tối ưu hơn nhưng nhìn ngứa mắt lắm còn đoạn thứ 2 tuy dài dòng, lặp code nhưng lại nhìn đẹp mắt hơn.
Mọi người nghĩ nên viết theo kiểu nào? Hoặc ai có cách viết hay hơn có thể post lên đây để mình tham khảo được không?
Bài liên quan
Đoạn code 1 cũng không tối ưu hơn là bao, code về lâu về dài thì phải rõ ràng và dễ bảo trì, vote cho 2
cảm ơn anh, em cũng thích đoạn 2 hơn
Bạn thử cách sau xem có tốt hơn không?
amPm = hour / 12 == 0 ? "AM" : "PM"
hour = hour % 12
Cách anh làm không đúng rồi ạ
00h (24-hour) <=> 12 AM (12-hour)
12h (24-hour) <=> 12 PM (12-hour)
2 trường hợp này là trường hợp đặc biệt nên em mới dùng nhiều if như thế
Đạt cũng hay lẫn lộn giữa AM và PM, vậy ra 12h trưa là PM? và 0 giờ sáng là 12AM? Có 23:59 vậy có 24h không ta?
Hihi. Vâng ạ. Đây là bảng hệ thống 12-hour, nó có so sánh mốc giờ tương ứng với hệ 24-hour
en.m.wikipedia.org
12-hour clock
The 12-hour clock is a time convention in which the 24 hours of the day are divided into two periods: a.m. (from the Latin, ante meridiem, meaning before midday) and p.m. (post meridiem, meaning past midday). Each period consists of 12 hours numbered: 12 (acting as zero), 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, and 11. The 24 hour/day cycle starts at 12 midnight (often indicated as 12 a.m.), runs through 12 noon (often indicated as 12 p.m.), and continues to the midnight at the end of the day. Th The 12...
Hầu hết các nước lấy mốc 00h là 12 AM, mỗi Nhật Bản thì lại 00 AM Vụ này cũng phức tạp lắm ạ :((
Vậy 24:00 thì mình show cái gì?
Không có 24h đâu ạ. Chỉ có 0h thôi. Lúc đấy mình show 12AM
Vậy là
hour
input của em vào không có số 24?Dạ. Giờ này nó cũng giống như phút. Từ 59 nhảy sang 00 luôn chứ không có 60
Nếu vậy thì nên tách ra tính AM PM riêng và tính giờ riêng, không nên gộp vào với nhau
Tính
amPm
Tính
hour
okie ạ, cho em mượn đoạn code của anh
hình như python nó có cú pháp elif là rút gọn của else if đó bạn, xài thử xem nếu bạn thấy code 2 dài