10/10/2018, 11:30

Giúp mình thuật toán tính số ngày trong 1 tháng

biết tháng/năm bất kỳ thì có thể cho ra số ngày của tháng đó
VD : biết tháng 9/2010 thì qua công thức sẽ tính được chính xác tháng 9/2010 có bao nhiêu ngày
Công thức này nhà sx lịch hay sử dụng để in lịch , tôi nhớ hồi mới học pascal thầy giáo cho bài này và có sử dụng công thức, nhưng lâu quá rồi không nhớ nữa . Bạn nào biết thì POST giúp mình cái công thức đó nhé. xin cảm ơn
zoejoe viết 13:43 ngày 10/10/2018
PHP Code:
$t$year$d;
switch ( 
$t ) {
    case 
1:
    case 
3:
    case 
5:
    case 
7:
    case 
8:
    case 
10:
    case 
12:
        
$d    31;
        break;
    case 
4:
    case 
6:
    case 
9:
    case 
11:
        
$d    30;
        break;
    case 
2:
        if( 
$year 100 != && $year == ) {
            
$d    29;
        } else {
            
$d    28;
        }
        break;
    default: 
$d    0;

Thử xem

[=========> Bổ sung bài viết <=========]

PHP Code:
$t$year$d;
switch ( 
$t ) {
    case 
1:
    case 
3:
    case 
5:
    case 
7:
    case 
8:
    case 
10:
    case 
12:
        
$d    31;
        break;
    case 
4:
    case 
6:
    case 
9:
    case 
11:
        
$d    30;
        break;
    case 
2:
        if( 
$year 100 != && $year == ) {
            
$d    29;
        } else {
            
$d    28;
        }
        break;
    default: 
$d    0;

Thử xem
cái nick đó viết 13:40 ngày 10/10/2018
cái này mình cũng ko biết nhưng khi kiếm Google thì nó ra hàm này: cal_days_in_month

Còn kiểm tra năm nhuận thì ng ta tính thêm trường hợp chia hết cho 400 nữa:

PHP Code:
if ($year 100 != && $year === || $year 400 === 0) {


Vô_Tình viết 13:45 ngày 10/10/2018
Hay quá, xin phép anh em stick vào cái !
The Old Man viết 13:33 ngày 10/10/2018
Những người viết chương trình cho kế toán thường hay viết nhửng function ngày tháng cần thiết tối thiểu như :
firstdayofmonth() -> return the first day of the month & year
lastdayofmonth() -> return the last day of the month & year
whatquater() -> return quater 1 /2 /3 /4 tuỳ theo ngay tìm
whatsemi() -> return semi-annual 1 /2 tuỳ theo ngay tìm
nameofmonth() -> return "January" , "Febuary" v.v. tuỳ theo ngay tìm
nameofday() -> return "Monday", Tuseday" v..v tuỳ theo ngay tìm.
dayofdate() -> - Return số của ngày ví dụ như ngày 25 tây.
Julian() -> return ngày thứ tự trong 365 ngày của năm.
isleapyear() -> return locgic đúng sai cho năm nhuận.

Khi có những function này trong library rồi thì chuyện tìm ngày tháng sẻ dể dàng.
Tuỳ theo ngôn ngữ dùng mà viết các function này.
Trong những chương trình kế toán tôi viết thì các funtion này luôn luôn gặp hoài không bao giờ thiếu.

Đây củng có thể gọi là một bài tập cho các bạn thử tài viết code của mình ra sao.
Những bài tập nhỏ nhưng rất hửu ích.
conan1212 viết 13:41 ngày 10/10/2018
Lâu quá mới lại thấy bác TOM ghé qua box lập trình web ^^
huongnd92 viết 13:33 ngày 10/10/2018
Được gửi bởi Vô_Tình
Hay quá, xin phép anh em stick vào cái !
thanks các anh chị nhiều.
mong các anh chị vì đàn em thân yêu!hihi
smtv1234 viết 13:44 ngày 10/10/2018
các bạn này giỏi thật nhĩ nhân tài của nước nhà
Được gửi bởi The Old Man
Những người viết chương trình cho kế toán thường hay viết nhửng function ngày tháng cần thiết tối thiểu như :
firstdayofmonth() -> return the first day of the month & year
lastdayofmonth() -> return the last day of the month & year
whatquater() -> return quater 1 /2 /3 /4 tuỳ theo ngay tìm
whatsemi() -> return semi-annual 1 /2 tuỳ theo ngay tìm
nameofmonth() -> return "January" , "Febuary" v.v. tuỳ theo ngay tìm
nameofday() -> return "Monday", Tuseday" v..v tuỳ theo ngay tìm.
dayofdate() -> - Return số của ngày ví dụ như ngày 25 tây.
Julian() -> return ngày thứ tự trong 365 ngày của năm.
isleapyear() -> return locgic đúng sai cho năm nhuận.

Khi có những function này trong library rồi thì chuyện tìm ngày tháng sẻ dể dàng.
Tuỳ theo ngôn ngữ dùng mà viết các function này.
Trong những chương trình kế toán tôi viết thì các funtion này luôn luôn gặp hoài không bao giờ thiếu.

Đây củng có thể gọi là một bài tập cho các bạn thử tài viết code của mình ra sao.
Những bài tập nhỏ nhưng rất hửu ích.
xx3004 viết 13:30 ngày 10/10/2018
Thuật toán nói bằng miệng nhé

Cứ tháng 1, 3, 5, 7, 8, 10, 12 là 31 hết.
Tháng 4, 6, 9, 11 là 30.
Còn nếu tháng 2 thì đem số năm chia cho 4, nếu chia hết tức là năm nhuận, có 29, còn nếu ko thì là năm thường, có 28 >.

Thân.
[x]
Bài liên quan
0