Skip to content

Latest commit

ย 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

README.md

ๆ—ฅๆœŸๆ—ถ้—ด๏ผˆDate Time๏ผ‰็ฎ—ๆณ•ๆฆ‚่ฟฐ

1. ไป€ไนˆๆ˜ฏๆ—ฅๆœŸๆ—ถ้—ด็ฎ—ๆณ•๏ผŸ

ๆ—ฅๆœŸๆ—ถ้—ด็ฎ—ๆณ•ๆ˜ฏๅค„็†ๆ—ฅๆœŸๅ’Œๆ—ถ้—ด่ฎก็ฎ—ใ€่ฝฌๆขใ€ๆ ผๅผๅŒ–ใ€่งฃๆž็š„็ฎ—ๆณ•้›†ๅˆใ€‚ๅœจๆ—ฅๅธธ็”Ÿๆดปไธญ๏ผŒๆ—ฅๆœŸๆ—ถ้—ด่ฎก็ฎ—ๆ— ๅค„ไธๅœจ๏ผŒไปŽ็ฎ€ๅ•็š„ๆ—ฅๅކๆ˜พ็คบๅˆฐๅคๆ‚็š„ๆ—ถๅŒบ่ฝฌๆขใ€้—ฐๅนดๅˆคๆ–ญใ€ๆ—ฅๆœŸ้—ด้š”่ฎก็ฎ—็ญ‰๏ผŒ้ƒฝ้œ€่ฆ็ฒพ็กฎ็š„็ฎ—ๆณ•ๆ”ฏๆŒใ€‚

ๆ—ถ้—ด่กจ็คบ็š„ๆผ”่ฟ›็คบๆ„๏ผš

ๆ—ถ้—ด่กจ็คบๆ–นๅผ็š„ๅ‘ๅฑ•:

ๅคไปฃ โ†’ ๆ—ฅๆ™ทใ€ๆฒ™ๆผ (็‰ฉ็†ๆต‹้‡)
         โ†“
ๆœบๆขฐๆ—ถไปฃ โ†’ ๆœบๆขฐ้’Ÿ่กจ (้ฝฟ่ฝฎไผ ๅŠจ)
         โ†“
็”ตๅญๆ—ถไปฃ โ†’ ็Ÿณ่‹ฑๆŒฏ่ก (32768 Hz)
         โ†“
ๆ•ฐๅญ—ๆ—ถไปฃ โ†’ ๆ—ถ้—ดๆˆณ (Unix Timestamp)
           ไปŽ1970-01-01 00:00:00 UTCๅผ€ๅง‹่ฎก็ฎ—็š„็ง’ๆ•ฐ/ๆฏซ็ง’ๆ•ฐ

่ฎก็ฎ—ๆœบไธญ็š„ๆ—ถ้—ดๅญ˜ๅ‚จ:
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Unixๆ—ถ้—ดๆˆณ: 1704067200                  โ”‚
โ”‚  ่กจ็คบ: 2024-01-01 00:00:00 UTC           โ”‚
โ”‚  ๅญ˜ๅ‚จ: 32ไฝ/64ไฝๆ•ดๆ•ฐ                      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

2. ๆ—ฅๆœŸๆ—ถ้—ด็š„ๅŸบๆœฌ็‰นๆ€ง

2.1 ๆ—ถ้—ด็ณป็ปŸ็š„ๅคๆ‚ๆ€ง

  • ๆ ผ้‡Œ้ซ˜ๅˆฉๅކ๏ผˆๅ…ฌๅކ๏ผ‰๏ผšๅ›ฝ้™…้€š็”จ็š„้˜ณๅކ็ณป็ปŸ
  • ้—ฐๅนด่ง„ๅˆ™๏ผš4ๅนดไธ€้—ฐ๏ผŒ100ๅนดไธ้—ฐ๏ผŒ400ๅนดๅ†้—ฐ
  • ๆ—ถๅŒบ๏ผšๅ…จ็ƒ24ไธชๆ—ถๅŒบ๏ผŒๅคไปคๆ—ถ(DST)่ฐƒๆ•ด
  • ๆ—ถ้—ดๆˆณ๏ผšUnix็บชๅ…ƒไปฅๆฅ็š„็ง’ๆ•ฐ/ๆฏซ็ง’ๆ•ฐ

2.2 ๆ—ฅๆœŸๆ—ถ้—ด็š„็ป„ๆˆ

ๅฎŒๆ•ดๆ—ฅๆœŸๆ—ถ้—ด็ป“ๆž„็คบๆ„:

2024-03-15 14:30:45.123 UTC+8
โ”‚    โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚    โ”‚
โ”‚    โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ”‚    โ””โ”€โ”€ ๆ—ถๅŒบๅ็งป
โ”‚    โ”‚  โ”‚  โ”‚  โ”‚  โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ๆฏซ็ง’
โ”‚    โ”‚  โ”‚  โ”‚  โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ็ง’
โ”‚    โ”‚  โ”‚  โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ๅˆ†
โ”‚    โ”‚  โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ๆ—ถ
โ”‚    โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ๆ—ฅ
โ”‚    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ๆœˆ
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ๅนด

ๅ„้ƒจๅˆ†็š„ๅ–ๅ€ผ่Œƒๅ›ด:
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  ๅญ—ๆฎต    โ”‚   ่Œƒๅ›ด    โ”‚        ่ฏดๆ˜Ž             โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚   ๅนด    โ”‚  1-9999   โ”‚ ๆ ผ้‡Œ้ซ˜ๅˆฉๅކๆœ‰ๆ•ˆ่Œƒๅ›ด        โ”‚
โ”‚   ๆœˆ    โ”‚   1-12    โ”‚                        โ”‚
โ”‚   ๆ—ฅ    โ”‚   1-31    โ”‚ ไพๆœˆไปฝๅ’Œ้—ฐๅนดๅ˜ๅŒ–          โ”‚
โ”‚   ๆ—ถ    โ”‚   0-23    โ”‚ 24ๅฐๆ—ถๅˆถ                โ”‚
โ”‚   ๅˆ†    โ”‚   0-59    โ”‚                        โ”‚
โ”‚   ็ง’    โ”‚   0-59    โ”‚ ้—ฐ็ง’ๆ—ถๅฏ่ƒฝไธบ60           โ”‚
โ”‚  ๆฏซ็ง’   โ”‚   0-999   โ”‚                        โ”‚
โ”‚  ๆ—ถๅŒบ   โ”‚  UTC-12   โ”‚  ๅˆฐ UTC+14              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

2.3 ๆ—ฅๆœŸๆ—ถ้—ด่ฎก็ฎ—็š„้šพ็‚น

ไผ˜็‚น๏ผš

  • ๆ ‡ๅ‡†ๅŒ–๏ผšISO 8601ๆ ‡ๅ‡†็ปŸไธ€ไบ†ๆ—ฅๆœŸๆ—ถ้—ด่กจ็คบ
  • ๆ•ฐๅญ—ๅŒ–๏ผšๆ—ถ้—ดๆˆณไพฟไบŽ่ฎก็ฎ—ๆœบๅญ˜ๅ‚จๅ’Œ่ฎก็ฎ—
  • ๅบ“ๆ”ฏๆŒ๏ผš็Žฐไปฃ็ผ–็จ‹่ฏญ่จ€้ƒฝๆœ‰ๅฎŒๅ–„็š„ๆ—ถ้—ดๅบ“

็ผบ็‚น๏ผš

  • ้—ฐๅนดๅคๆ‚ๆ€ง๏ผš2ๆœˆๅคฉๆ•ฐไธๅ›บๅฎš
  • ๆ—ถๅŒบ่ฝฌๆข๏ผšๅคไปคๆ—ถๅธฆๆฅ้ขๅค–ๅคๆ‚ๅบฆ
  • ๅކๅฒๅކๆณ•๏ผšไธๅŒๅœฐๅŒบๆ›พไฝฟ็”จไธๅŒๅކๆณ•
  • ็ฒพๅบฆ้—ฎ้ข˜๏ผšๆตฎ็‚นๆ•ฐ่กจ็คบๆ—ถ้—ด็š„็ฒพๅบฆๆŸๅคฑ

3. ๅธธ่ง็š„ๆ—ฅๆœŸๆ—ถ้—ด็ฎ—ๆณ•

3.1 ้—ฐๅนดๅˆคๆ–ญ๏ผˆLeap Year๏ผ‰

ๆฆ‚่ฟฐ๏ผš

  • ๅˆคๆ–ญ็ป™ๅฎšๅนดไปฝๆ˜ฏๅฆไธบ้—ฐๅนด
  • ้—ฐๅนด2ๆœˆๆœ‰29ๅคฉ๏ผŒๅนณๅนด2ๆœˆๆœ‰28ๅคฉ

้—ฐๅนด่ง„ๅˆ™็คบๆ„๏ผš

้—ฐๅนดๅˆคๆ–ญๆต็จ‹:

ๅนดไปฝ year
    โ”‚
    โ”œโ”€โ”€ year % 4 != 0 โ”€โ”€โ†’ ๅนณๅนด (ๅฆ‚: 2023)
    โ”‚
    โ”œโ”€โ”€ year % 100 != 0 โ”€โ”€โ†’ ้—ฐๅนด (ๅฆ‚: 2024)
    โ”‚
    โ”œโ”€โ”€ year % 400 != 0 โ”€โ”€โ†’ ๅนณๅนด (ๅฆ‚: 2100)
    โ”‚
    โ””โ”€โ”€ ้—ฐๅนด (ๅฆ‚: 2000)

ๅˆคๅฎš้€ป่พ‘:
(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)

็คบไพ‹้ชŒ่ฏ:
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ ๅนดไปฝ  โ”‚ % 4 == 0 โ”‚ %100 !=0 โ”‚ %400 == 0 โ”‚  ็ป“ๆžœ  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 2000 โ”‚    โœ“     โ”‚    โœ—     โ”‚     โœ“     โ”‚  ้—ฐๅนด  โ”‚
โ”‚ 2024 โ”‚    โœ“     โ”‚    โœ“     โ”‚     -     โ”‚  ้—ฐๅนด  โ”‚
โ”‚ 2100 โ”‚    โœ“     โ”‚    โœ—     โ”‚     โœ—     โ”‚  ๅนณๅนด  โ”‚
โ”‚ 2023 โ”‚    โœ—     โ”‚    -     โ”‚     -     โ”‚  ๅนณๅนด  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ๆ ธๅฟƒๆ€ๆƒณ๏ผš

  • ่ƒฝ่ขซ4ๆ•ด้™คไฝ†ไธ่ƒฝ่ขซ100ๆ•ด้™ค๏ผŒๆˆ–่€…่ƒฝ่ขซ400ๆ•ด้™ค

ๅบ”็”จ๏ผš

  • ๆ—ฅๅކ็”Ÿๆˆ
  • ๆ—ฅๆœŸ้—ด้š”่ฎก็ฎ—
  • ๅนด้พ„่ฎก็ฎ—

ๅฎž็Žฐๆ–‡ไปถ๏ผš

  • isLeapYear.c

3.2 ๆ˜ŸๆœŸ่ฎก็ฎ—๏ผˆZeller's Congruence๏ผ‰

ๆฆ‚่ฟฐ๏ผš

  • ๆ นๆฎๆ—ฅๆœŸ่ฎก็ฎ—ๆ˜ŸๆœŸๅ‡ 
  • ๅคš็ง็ฎ—ๆณ•๏ผšZellerๅ…ฌๅผใ€ๅŸบๅง†ๆ‹‰ๅฐ”ๆฃฎๅ…ฌๅผใ€่”กๅ‹’ๅ…ฌๅผ

Zellerๅ…ฌๅผ็คบๆ„๏ผš

ๆ˜ŸๆœŸ่ฎก็ฎ—ๅ…ฌๅผ (Zeller's Congruence):

ๅฏนไบŽๆ ผ้‡Œ้ซ˜ๅˆฉๅކ (1582ๅนดไน‹ๅŽ):
h = (q + [13ร—(m+1)/5] + K + [K/4] + [J/4] + 5ร—J) mod 7

ๅ˜้‡่ฏดๆ˜Ž:
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ ๅ˜้‡   โ”‚              ่ฏดๆ˜Ž                  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚   h   โ”‚ ๆ˜ŸๆœŸๅ‡  (0=ๅ‘จๅ…ญ, 1=ๅ‘จๆ—ฅ, ..., 6=ๅ‘จไบ”)  โ”‚
โ”‚   q   โ”‚ ๆ—ฅๆœŸ (1-31)                         โ”‚
โ”‚   m   โ”‚ ๆœˆไปฝ (3=3ๆœˆ, ..., 14=2ๆœˆ)            โ”‚
โ”‚       โ”‚ ๆณจๆ„: 1ๆœˆๅ’Œ2ๆœˆ่ง†ไธบไธŠไธ€ๅนด็š„13ๆœˆๅ’Œ14ๆœˆ    โ”‚
โ”‚   K   โ”‚ ๅนดไปฝ % 100 (ไธ–็บชๅ†…็š„ๅนดไปฝ)             โ”‚
โ”‚   J   โ”‚ ๅนดไปฝ / 100 (้›ถๅŸบไธ–็บช)                โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

็คบไพ‹: 2024ๅนด3ๆœˆ15ๆ—ฅ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  ๅ˜้‡     โ”‚  ๅ€ผ     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚    q     โ”‚   15    โ”‚
โ”‚    m     โ”‚   3     โ”‚
โ”‚    K     โ”‚   24    โ”‚ (2024 % 100)
โ”‚    J     โ”‚   20    โ”‚ (2024 / 100)
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

่ฎก็ฎ—:
h = (15 + [13ร—4/5] + 24 + [24/4] + [20/4] + 5ร—20) mod 7
  = (15 + 10 + 24 + 6 + 5 + 100) mod 7
  = 160 mod 7
  = 6 (ๆ˜ŸๆœŸไบ”)

้ชŒ่ฏ: 2024ๅนด3ๆœˆ15ๆ—ฅ็กฎๅฎžๆ˜ฏๆ˜ŸๆœŸไบ”

ๆ ธๅฟƒๆ€ๆƒณ๏ผš

  • ๅˆฉ็”จๆ•ฐๅญฆๅ…ฌๅผๅฐ†ๆ—ฅๆœŸๆ˜ ๅฐ„ๅˆฐๆ˜ŸๆœŸ
  • ่€ƒ่™‘ไบ†ๆฏๆœˆๅคฉๆ•ฐๅทฎๅผ‚ๅ’Œ้—ฐๅนดๅฝฑๅ“

ๅบ”็”จ๏ผš

  • ๆ—ฅๅކๆ˜พ็คบ
  • ๆ—ฅๆœŸ้ชŒ่ฏ
  • ๆŽ’็ญ็ณป็ปŸ

ๅฎž็Žฐๆ–‡ไปถ๏ผš

  • calendar.c / calendar_simple.c

3.3 ๆ—ฅๅކ็”Ÿๆˆ๏ผˆCalendar Generation๏ผ‰

ๆฆ‚่ฟฐ๏ผš

  • ็”ŸๆˆๆŒ‡ๅฎšๅนดๆœˆ็š„ๆ—ฅๅކ่ง†ๅ›พ
  • ๅค„็†ๆœˆไปฝๅคฉๆ•ฐใ€ๆ˜ŸๆœŸๅฏน้ฝใ€้—ฐๅนด้€ป่พ‘

ๆ—ฅๅކๅธƒๅฑ€็คบๆ„๏ผš

2024ๅนด3ๆœˆๆ—ฅๅކ:

    ๆ—ฅ   ไธ€   ไบŒ   ไธ‰   ๅ››   ไบ”   ๅ…ญ
   โ”โ”โ” โ”โ”โ” โ”โ”โ” โ”โ”โ” โ”โ”โ” โ”โ”โ” โ”โ”โ”
                      1    2
    3    4    5    6    7    8    9
   10   11   12   13   14   15   16
   17   18   19   20   21   22   23
   24   25   26   27   28   29   30
   31

็ฎ—ๆณ•ๆญฅ้ชค:
1. ็กฎๅฎš่ฏฅๆœˆ1ๆ—ฅๆ˜ฏๆ˜ŸๆœŸๅ‡ 
2. ็กฎๅฎš่ฏฅๆœˆๆœ‰ๅคšๅฐ‘ๅคฉ (่€ƒ่™‘้—ฐๅนด)
3. ไปŽๆญฃ็กฎ็š„ๆ˜ŸๆœŸไฝ็ฝฎๅผ€ๅง‹ๅกซๅ……ๆ—ฅๆœŸ
4. ่กฅ้ฝ้ฆ–ๅฐพ็ฉบ็™ฝ

2024ๅนดๅ„ๆœˆๅคฉๆ•ฐ:
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  ๆœˆ  โ”‚ ๅคฉๆ•ฐ  โ”‚  ๆœˆ  โ”‚ ๅคฉๆ•ฐ  โ”‚  ๆœˆ  โ”‚ ๅคฉๆ•ฐ  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  1   โ”‚  31  โ”‚  4   โ”‚  30  โ”‚  7   โ”‚  31  โ”‚
โ”‚  2   โ”‚  29  โ”‚  5   โ”‚  31  โ”‚  8   โ”‚  31  โ”‚
โ”‚  3   โ”‚  31  โ”‚  6   โ”‚  30  โ”‚  9   โ”‚  30  โ”‚
โ”‚      โ”‚      โ”‚      โ”‚      โ”‚  10  โ”‚  31  โ”‚
โ”‚      โ”‚      โ”‚      โ”‚      โ”‚  11  โ”‚  30  โ”‚
โ”‚      โ”‚      โ”‚      โ”‚      โ”‚  12  โ”‚  31  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ๆ ธๅฟƒๆ€ๆƒณ๏ผš

  • ่ฎก็ฎ—่ตทๅง‹ๆ˜ŸๆœŸๅ็งป
  • ๆŒ‰7ๅˆ—ๅธƒๅฑ€ๅกซๅ……ๆ—ฅๆœŸ

ๅบ”็”จ๏ผš

  • ๆ—ฅๅކๅบ”็”จ
  • ๆ—ฅ็จ‹็ฎก็†็ณป็ปŸ
  • ๆ—ฅๆœŸ้€‰ๆ‹ฉๅ™จ

ๅฎž็Žฐๆ–‡ไปถ๏ผš

  • calendar.c

3.4 ๆ—ฅๆœŸ้—ด้š”่ฎก็ฎ—๏ผˆDate Diff๏ผ‰

ๆฆ‚่ฟฐ๏ผš

  • ่ฎก็ฎ—ไธคไธชๆ—ฅๆœŸไน‹้—ด็š„ๅคฉๆ•ฐใ€ๆœˆๆ•ฐใ€ๅนดๆ•ฐ
  • ่€ƒ่™‘้—ฐๅนดๅ’ŒไธๅŒๆœˆไปฝๅคฉๆ•ฐ

ๆ—ฅๆœŸ้—ด้š”่ฎก็ฎ—็คบๆ„๏ผš

่ฎก็ฎ— 2023-01-15 ๅˆฐ 2024-03-20 ็š„้—ด้š”:

ๆ–นๆณ•1: ่ฝฌๆขไธบๆ—ถ้—ดๆˆณๅทฎ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ ๆ—ฅๆœŸ1: 2023-01-15 = 1673740800 (Unix)  โ”‚
โ”‚ ๆ—ฅๆœŸ2: 2024-03-20 = 1710902400 (Unix)  โ”‚
โ”‚ ๅทฎๅ€ผ: 1710902400 - 1673740800          โ”‚
โ”‚     = 37161600 ็ง’                      โ”‚
โ”‚     = 430 ๅคฉ                           โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ๆ–นๆณ•2: ้€ๆ—ฅ่ฎก็ฎ— (่€ƒ่™‘้—ฐๅนด)
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ 2023-01-15 ๅˆฐ 2024-01-15 = 366ๅคฉ       โ”‚
โ”‚   (2024ๆ˜ฏ้—ฐๅนด๏ผŒ่ฟ‡ไบ†2ๆœˆ29ๆ—ฅ)              โ”‚
โ”‚                                        โ”‚
โ”‚ 2024-01-15 ๅˆฐ 2024-03-20:              โ”‚
โ”‚   1ๆœˆๅ‰ฉไฝ™: 31-15 = 16ๅคฉ                 โ”‚
โ”‚   2ๆœˆๅฎŒๆ•ด: 29ๅคฉ (้—ฐๅนด)                  โ”‚
โ”‚   3ๆœˆๅทฒ่ฟ‡: 20ๅคฉ                         โ”‚
โ”‚   ๅฐ่ฎก: 16 + 29 + 20 = 65ๅคฉ             โ”‚
โ”‚                                        โ”‚
โ”‚ ๆ€ป่ฎก: 366 + 65 = 431ๅคฉ ??              โ”‚
โ”‚ ็บ ๆญฃ: ๅฎž้™…ไธŠๅบ”่ฏฅๆ˜ฏ430ๅคฉ                  โ”‚
โ”‚ ่ฏดๆ˜Ž: ่ทจ้—ฐๅนดๆ—ฅๆœŸ็š„่ฎก็ฎ—้œ€่ฆไป”็ป†ๅค„็†         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ๆ ธๅฟƒๆ€ๆƒณ๏ผš

  • ่ฝฌๆขไธบๆ—ถ้—ดๆˆณ่ฎก็ฎ—ๆœ€็ฎ€ๅ•
  • ๆˆ–็›ดๆŽฅ่ฎก็ฎ—ๅ„ๆ—ถ้—ดๆฎต็ดฏๅŠ 

ๅบ”็”จ๏ผš

  • ๅนด้พ„่ฎก็ฎ—
  • ๅˆๅŒๆœŸ้™
  • ้กน็›ฎๅทฅๆœŸ

ๅฎž็Žฐๆ–‡ไปถ๏ผš

  • calendar.c ไธญ็š„ๆ—ฅๆœŸ่ฎก็ฎ—ๅ‡ฝๆ•ฐ

3.5 ๆธฉๅบฆ่ฝฌๆข๏ผˆTemperature Conversion๏ผ‰

ๆฆ‚่ฟฐ๏ผš

  • ๆ‘„ๆฐๆธฉๅบฆ(ยฐC)ใ€ๅŽๆฐๆธฉๅบฆ(ยฐF)ใ€ๅผ€ๅฐ”ๆ–‡ๆธฉๅบฆ(K)ไน‹้—ด็š„่ฝฌๆข

ๆธฉๅบฆ่ฝฌๆขๅ…ฌๅผ็คบๆ„๏ผš

ๆธฉๅบฆ่ฝฌๆขๅ…ฌๅผ:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ ๆ‘„ๆฐ โ†’ ๅŽๆฐ: ยฐF = ยฐC ร— 9/5 + 32                          โ”‚
โ”‚ ๅŽๆฐ โ†’ ๆ‘„ๆฐ: ยฐC = (ยฐF - 32) ร— 5/9                        โ”‚
โ”‚ ๆ‘„ๆฐ โ†’ ๅผ€ๅฐ”ๆ–‡: K = ยฐC + 273.15                           โ”‚
โ”‚ ๅผ€ๅฐ”ๆ–‡ โ†’ ๆ‘„ๆฐ: ยฐC = K - 273.15                           โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ๅธธ็”จๆธฉๅบฆๅฏน็…ง:
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   ๆ‘„ๆฐยฐC    โ”‚   ๅŽๆฐยฐF    โ”‚   ๅผ€ๅฐ”ๆ–‡K   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  -273.15   โ”‚   -459.67  โ”‚     0      โ”‚ ็ปๅฏน้›ถๅบฆ
โ”‚     0      โ”‚     32     โ”‚   273.15   โ”‚ ๅ†ฐ็‚น
โ”‚    37      โ”‚    98.6    โ”‚   310.15   โ”‚ ไบบไฝ“ไฝ“ๆธฉ
โ”‚   100      โ”‚    212     โ”‚   373.15   โ”‚ ๆฒธ็‚น
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ๆ ธๅฟƒๆ€ๆƒณ๏ผš

  • ็บฟๆ€ง่ฝฌๆขๅ…ณ็ณป
  • ๆณจๆ„ๆตฎ็‚นๆ•ฐ็ฒพๅบฆ

ๅบ”็”จ๏ผš

  • ๅคฉๆฐ”้ข„ๆŠฅ
  • ็ง‘ๅญฆ่ฎก็ฎ—
  • ๆ—ฅๅธธ็”Ÿๆดป

ๅฎž็Žฐๆ–‡ไปถ๏ผš

  • celsiusToFahrenheit.c

4. ๅ…ธๅž‹ๅบ”็”จๅœบๆ™ฏ

4.1 ็ณป็ปŸๅผ€ๅ‘

  • ๆ—ฅๅฟ—็ณป็ปŸ๏ผšๆ—ถ้—ดๆˆณ่ฎฐๅฝ•ใ€ๆ—ฅๅฟ—่ฝฎ่ฝฌ
  • ๅฎšๆ—ถไปปๅŠก๏ผšCron่กจ่พพๅผ่งฃๆžใ€ไปปๅŠก่ฐƒๅบฆ
  • ็ผ“ๅญ˜็ณป็ปŸ๏ผš่ฟ‡ๆœŸๆ—ถ้—ด่ฎก็ฎ—ใ€TTL็ฎก็†
  • ไผš่ฏ็ฎก็†๏ผšSession่ฟ‡ๆœŸใ€Tokenๆœ‰ๆ•ˆๆœŸ

4.2 ไธšๅŠกๅบ”็”จ

  • ้‡‘่ž้ข†ๅŸŸ๏ผšไบคๆ˜“ๆ—ฅ่ฎก็ฎ—ใ€ๅˆฉๆฏ่ฎก็ฎ—ใ€ๅˆฐๆœŸๆ—ฅ
  • ไบบๅŠ›่ต„ๆบ๏ผš่€ƒๅ‹ค็ปŸ่ฎกใ€ๅทฅๆ—ถ่ฎก็ฎ—ใ€ๆŽ’็ญ
  • ็”ตๅญๅ•†ๅŠก๏ผš่ฎขๅ•ๆ—ถๆ•ˆใ€ไฟƒ้”€ๅ€’่ฎกๆ—ถใ€้ข„็บฆ็ณป็ปŸ
  • ๅŒป็–—ๅฅๅบท๏ผš็”จ่ฏๆ้†’ใ€้š่ฎฟๅ‘จๆœŸใ€็”Ÿ็†ๅ‘จๆœŸ

4.3 ็ง‘ๅญฆ่ฎก็ฎ—

  • ๅคฉๆ–‡่ฎก็ฎ—๏ผšๆ˜Ÿๅކ่กจใ€ๆ—ฅๅ‡บๆ—ฅ่ฝๆ—ถ้—ด
  • ๆ•ฐๆฎๅˆ†ๆž๏ผšๆ—ถ้—ดๅบๅˆ—ๅˆ†ๆžใ€่ถ‹ๅŠฟ้ข„ๆต‹
  • ๆ—ถๅŒบๅค„็†๏ผš่ทจๅ›ฝไผš่ฎฎๆ—ถ้—ดใ€่ˆช็ญๆ—ถๅˆป่กจ

5. ็ฎ—ๆณ•ๆŠ€ๅทงๆ€ป็ป“

5.1 ๆ—ถ้—ดๆˆณ่ฝฌๆขๆŠ€ๅทง

Unixๆ—ถ้—ดๆˆณ็š„ไผ˜็‚น:
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ โ€ข ๅ•ไธ€ๆ•ดๆ•ฐ๏ผŒๅญ˜ๅ‚จ้ซ˜ๆ•ˆ                       โ”‚
โ”‚ โ€ข ๆฏ”่พƒๅคงๅฐ็ฎ€ๅ• (ๆ•ฐๅ€ผๆฏ”่พƒ)                  โ”‚
โ”‚ โ€ข ๆ—ถๅŒบๆ— ๅ…ณ๏ผŒไพฟไบŽๅ›ฝ้™…ไผ ่พ“                   โ”‚
โ”‚ โ€ข ่ฎก็ฎ—้—ด้š”ๅช้œ€ๅ‡ๆณ•                        โ”‚
โ”‚ โ€ข ๆŽ’ๅบ้ซ˜ๆ•ˆ                               โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

่ฝฌๆขๆณจๆ„ไบ‹้กน:
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ โ€ข ๆณจๆ„็ง’็บง vs ๆฏซ็ง’็บงๆ—ถ้—ดๆˆณ                 โ”‚
โ”‚ โ€ข ๅค„็†ๆ—ถๅŒบ่ฝฌๆข่ฆไธฅ่ฐจ                       โ”‚
โ”‚ โ€ข ้—ฐ็ง’ๆ˜ฏ็‰นๆฎŠๆƒ…ๅ†ต (23:59:60)               โ”‚
โ”‚ โ€ข 2038ๅนด้—ฎ้ข˜ (32ไฝ็ณป็ปŸ)                  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

5.2 ๆ—ฅๆœŸๆ ผๅผๅŒ–ๆŠ€ๅทง

  • ISO 8601๏ผšYYYY-MM-DDTHH:mm:ss.sssZ๏ผˆๅ›ฝ้™…ๆ ‡ๅ‡†๏ผ‰
  • RFC 2822๏ผšMon, 15 Mar 2024 14:30:00 GMT
  • ๆœฌๅœฐๅŒ–ๆ ผๅผ๏ผšๆ นๆฎ็”จๆˆทๅœฐๅŒบๆ˜พ็คบไธๅŒๆ ผๅผ

5.3 ๆ—ถๅŒบๅค„็†ๅŽŸๅˆ™

  • ๅญ˜ๅ‚จ๏ผšไฝฟ็”จUTCๆ—ถ้—ดๅญ˜ๅ‚จ
  • ไผ ่พ“๏ผšไฝฟ็”จISO 8601ๆ ผๅผๅธฆๆ—ถๅŒบไฟกๆฏ
  • ๆ˜พ็คบ๏ผšๆ นๆฎ็”จๆˆทๆ—ถๅŒบๆœฌๅœฐๅŒ–ๆ˜พ็คบ
  • ่ฎก็ฎ—๏ผšๅ…ˆ่ฝฌUTC่ฎก็ฎ—๏ผŒๅ†่ฝฌๅ›žๆœฌๅœฐ

6. ๆ€ง่ƒฝ็‰น็‚น

6.1 ๆ—ถ้—ดๅคๆ‚ๅบฆ

ๆ“ไฝœ ๆ—ถ้—ดๅคๆ‚ๅบฆ ่ฏดๆ˜Ž
้—ฐๅนดๅˆคๆ–ญ O(1) ็ฎ€ๅ•ๅ–ๆจก่ฟ็ฎ—
ๆ˜ŸๆœŸ่ฎก็ฎ— O(1) ๆ•ฐๅญฆๅ…ฌๅผ็›ดๆŽฅ่ฎก็ฎ—
ๆ—ฅๆœŸ้—ด้š” O(1) ๆ—ถ้—ดๆˆณๅทฎๆˆ–ๅ…ฌๅผ่ฎก็ฎ—
ๆ—ฅๅކ็”Ÿๆˆ O(n) nไธบ่ฏฅๆœˆๅคฉๆ•ฐ
ๆ—ฅๆœŸ่งฃๆž O(1) ๅญ—็ฌฆไธฒ่งฃๆžๅ’Œ่ฝฌๆข

6.2 ็ฉบ้—ดๅคๆ‚ๅบฆ

  • ๆ—ฅๆœŸๆ—ถ้—ดๅฏน่ฑก้€šๅธธๅ ็”จ8-16ๅญ—่Š‚
  • ๆ—ถ้—ดๆˆณๅญ˜ๅ‚จไป…้œ€4-8ๅญ—่Š‚

7. ็ผ–็จ‹่ฏญ่จ€ๆ”ฏๆŒ

  • C๏ผšๆ ‡ๅ‡†ๅบ“<time.h>๏ผŒstruct tm็ป“ๆž„
  • Java๏ผšjava.timeๅŒ…๏ผˆJava 8+๏ผ‰
  • Go๏ผštimeๅŒ…๏ผŒLocationๆ—ถๅŒบๅค„็†
  • JavaScript๏ผšDateๅฏน่ฑก๏ผŒๆŽจ่ Temporal API๏ผˆๆœชๆฅ๏ผ‰
  • Python๏ผšdatetimeๆจกๅ—๏ผŒๆ—ถๅŒบๆ”ฏๆŒๅฎŒๅ–„
  • Rust๏ผšchronoๅบ“๏ผŒ็ฑปๅž‹ๅฎ‰ๅ…จ็š„ๆ—ถ้—ดๅค„็†

8. ๅญฆไน ๅปบ่ฎฎ

8.1 ๅญฆไน ่ทฏๅพ„

  1. ๅŸบ็ก€ๆฆ‚ๅฟต๏ผš็†่งฃๆ—ถ้—ดๆˆณใ€ๆ—ถๅŒบใ€้—ฐๅนด่ง„ๅˆ™
  2. ๆ—ฅๆœŸ่ฎก็ฎ—๏ผšๆŽŒๆกๆ—ฅๆœŸ้—ด้š”ใ€ๆ˜ŸๆœŸ่ฎก็ฎ—
  3. ๆ ผๅผๅค„็†๏ผšๅญฆไผš่งฃๆžๅ’Œๆ ผๅผๅŒ–ๆ—ฅๆœŸๅญ—็ฌฆไธฒ
  4. ๆ—ถๅŒบ่ฟ›้˜ถ๏ผšๅค„็†ๅคไปคๆ—ถใ€ๅคšๆ—ถๅŒบ่ฝฌๆข

8.2 ๅฎž่ทต่ฆ็‚น

  • ๅง‹็ปˆไฝฟ็”จๆ ‡ๅ‡†ๅบ“ๅค„็†ๆ—ฅๆœŸๆ—ถ้—ด๏ผŒ้ฟๅ…ๆ‰‹ๅ†™
  • ๅญ˜ๅ‚จๅ’Œไผ ่พ“ไฝฟ็”จUTC๏ผŒไป…ๅœจๆ˜พ็คบๆ—ถ่ฝฌๆข
  • ๆณจๆ„่พน็•Œๆƒ…ๅ†ต๏ผš้—ฐๅนดใ€้—ฐ็ง’ใ€ๆ—ถๅŒบ่พน็•Œ
  • ๆต‹่ฏ•ๆ—ถ่ฆ†็›–ๅ„็ง่พน็•Œๆ—ฅๆœŸ๏ผˆ2ๆœˆ29ๆ—ฅใ€12ๆœˆ31ๆ—ฅ็ญ‰๏ผ‰
  • 2038ๅนด้—ฎ้ข˜ awareness๏ผˆ32ไฝๆ—ถ้—ดๆˆณๆบขๅ‡บ๏ผ‰