ថ្ងៃនៃដំណោះស្រាយឡេឡេលេខកូដប្រចាំឆ្នាំ


កម្រិតលំបាក មានភាពងាយស្រួល
សួរញឹកញាប់ ZScaler
គណិតវិទ្យា

សេចក្តីថ្លែងការណ៍បញ្ហា

នៅក្នុងបញ្ហា "ទិវានៃឆ្នាំ" យើងត្រូវបានផ្តល់ឱ្យក ខ្សែអក្សរ ដែលមានកាលបរិច្ឆេទជាទ្រង់ទ្រាយ YYYY-MM-DD ។ ភារកិច្ចរបស់យើងគឺប្រគល់ចំនួនថ្ងៃនៃកាលបរិច្ឆេទនោះ។

ប្រសិនបើកាលបរិច្ឆេទដែលបានផ្តល់គឺ 2020-01-05 ។ នេះជាថ្ងៃទី ៥ ខែមករាឆ្នាំ ២០២០ ដែលជាថ្ងៃទី ៥ នៃឆ្នាំ ២០២០ ។ ដូច្នេះយើងនឹងត្រឡប់មកវិញ ៥ ។

ឧទាហរណ៍

date = "2019-01-09"
9

ការពន្យល់:

 

ដូចនៅក្នុងឧទាហរណ៍ដែលបានផ្តល់ឱ្យថ្ងៃដែលបានផ្តល់ឱ្យគឺថ្ងៃទី 9 ខែមករាឆ្នាំ 2019។ ដែលជាថ្ងៃទី 9 នៃឆ្នាំ 2019 ។ ដូច្នេះចម្លើយគឺ 9 ។

វិធីសាស្រ្តសម្រាប់ថ្ងៃនៃឆ្នាំដំណោះស្រាយឡេឡេលេខកូដ

នៅពេលការបញ្ចូលត្រូវបានផ្តល់ជាទម្រង់ខ្សែអក្សរយើងត្រូវស្រង់កាលបរិច្ឆេទខែនិងឆ្នាំពីខ្សែអក្សរជាប្រភេទទិន្នន័យចំនួនគត់។ ដូច្នេះយើងនឹងបំបែកខ្សែអក្សរហើយនឹងដកស្រង់កាលបរិច្ឆេទខែនិងឆ្នាំពីវា។

ដូចខែនីមួយៗមានចំនួនខុសគ្នានៃចំនួនថ្ងៃ។ ដូច្នេះដើម្បីតាមដានចំនួនថ្ងៃសម្រាប់រាល់ខែយើងនឹងប្រើអារេមួយហើយនឹងរក្សាទុកចំនួនថ្ងៃសម្រាប់ខែនីមួយៗ។

ឥឡូវយើងត្រូវដោះស្រាយចំនួនថ្ងៃសំរាប់ខែកុម្ភះព្រោះសំរាប់ឆ្នាំបង្គ្រប់វាមាន ២៩ ថ្ងៃហើយសំរាប់ឆ្នាំដែលមិនលោតវាមានចំនួន ២៨ ថ្ងៃ។

ឆ្នាំគឺជាឆ្នាំបង្គ្រប់៖

  1. ប្រសិនបើវាអាចចែកបានដោយ ៤០០
  2. វាអាចចែកបានដោយ ៤ ប៉ុន្តែមិនអាចចែកបានដោយ ១០០ ។

ថ្ងៃនៃដំណោះស្រាយឡេឡេលេខកូដប្រចាំឆ្នាំ

ដើម្បីគណនាថ្ងៃនៃឆ្នាំនេះគ្រាន់តែបន្ថែមចំនួនថ្ងៃទាំងអស់នៃខែនីមួយៗពីខែមករាដល់ខែដែលបានផ្តល់ឱ្យ។ បន្ថែមចំនួនថ្ងៃចាប់ពីកាលបរិច្ឆេទដែលបានផ្តល់ឱ្យ។ នេះនឹងផ្តល់ឱ្យថ្ងៃនៃឆ្នាំសម្រាប់កាលបរិច្ឆេទដែលបានផ្តល់ឱ្យ។

ការអនុវត្តន៍

លេខកូដ C ++ សម្រាប់ថ្ងៃនៃឆ្នាំ

#include <bits/stdc++.h> 
using namespace std; 
int dayOfYear(string dt) {
  int days[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
  int y = stoi(dt.substr(0, 4)), m = stoi(dt.substr(5, 2)), d = stoi(dt.substr(8));
  if (m > 2 && y % 4 == 0 && (y % 100 != 0|| y % 400 == 0)) ++d; 
  while (--m > 0) d += days[m - 1];
  return d;
}
int main() 
{ 
 string date="2019-01-09";
 int ans=dayOfYear(date);
 cout<<ans<<endl;
 return 0;
}
9

កូដចាវ៉ាសម្រាប់ទិវានៃឆ្នាំ

import java.util.Arrays;
import java.util.Set ;
import java.util.HashSet;
public class Tutorialcup {
    public static int dayOfYear(String S) {
        int[] days = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        String[] s = S.split("-");
        int y = Integer.parseInt(s[0]);
        int m = Integer.parseInt(s[1]);
        int d = Integer.parseInt(s[2]);
        if (m > 2 && y % 4 == 0 && (y % 100 != 0|| y % 400 == 0)) ++d; 
        while (--m > 0) d += days[m - 1];
        return d;
    } 
  public static void main(String[] args) {
         String date="2019-01-09";
         int ans=dayOfYear(date);
        System.out.println(ans);
  }
}
9

ការវិភាគស្មុគស្មាញនៃថ្ងៃនៃឆ្នាំឡេសូកូដសូល

ភាពស្មុគស្មាញពេលវេលា

ពេលវេលាស្មុគស្មាញនៃលេខកូដខាងលើគឺ ឱ (១).

ភាពស្មុគស្មាញនៃលំហ

ភាពស្មុគស្មាញចន្លោះនៃលេខកូដខាងលើគឺ ឱ (១).

ឯកសារយោង