.NET লাইব্রেরিতে মাসের জন্য পূর্বনির্ধারিত গণনা রয়েছে?


100

আমি। নেট ফ্রেমওয়ার্কে কয়েক মাসের জন্য একটি সরকারী গণনা আছে কিনা তা দেখার জন্য সন্ধান করছি।

আমার কাছে এটি সম্ভব বলে মনে হয় যে এক মাস রয়েছে, কারণ মাসের ব্যবহার কত সাধারণ is

উদাহরণস্বরূপ, সপ্তাহের কয়েক দিনের জন্য একটি গণনা রয়েছে, System.DayOfWeek, যার মধ্যে সোমবার, মঙ্গলবার ইত্যাদি রয়েছে ..

আমি ভাবছি বছরের এক মাসের জন্য যেমন জানুয়ারী, ফেব্রুয়ারী ইত্যাদি আছে কি?

কেউ কি জানে?

উত্তর:


119

নেই, তবে আপনি যদি কোনও মাসের নাম চান তবে আপনি এটি ব্যবহার করতে পারেন:

CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName (DateTime.Now.Month);

যা একটি স্ট্রিং প্রতিনিধিত্ব ফিরিয়ে দেবে (চলতি মাসের, এই ক্ষেত্রে)। নোট যে GetMonth1 থেকে 13 এর মধ্যে আর্গুমেন্ট নেয় - জানুয়ারী 1, 13 একটি ফাঁকা স্ট্রিং।


11
যদিও এটি কোনও এনাম নয়।
স্কট উইসনিউস্কি

4
ধন্যবাদ, আকর্ষণীয় উত্তর, আমি যা খুঁজছিলাম তা নয়, তবে এখনও একটি + মূল্যবান!
মার্ক রজার্স

4
আমি সংস্কৃতি নির্দিষ্ট ইস্যু সম্পর্কে একমত, তবে কেন মাইক্রোসফ্ট ডে-অফউইক তৈরি করেছিল, এটি সংস্কৃতি-নির্দিষ্ট। মজার, হাহ?
মার্ক রজার্স

12
সম্ভবত বিভিন্ন সংস্কৃতির বিভিন্ন মাসিক ক্যালেন্ডার রয়েছে, তবে প্রতি সপ্তাহে আলাদা আলাদা সংখ্যা রয়েছে এমন একটি (স্পষ্টতই) নেই। সুতরাং প্রতি সপ্তাহে দিনের সংখ্যা নাম না থাকলেও সামঞ্জস্যপূর্ণ ।
রায়ান লুন্ডি

11
আপনি যদি সংস্কৃতিগতভাবে সংবেদনশীল, সময়ের ভ্রমণের প্রোগ্রামার হন তবে সচেতন থাকুন যে সংস্কৃতিগুলি ছিল দশমিক সপ্তাহ (যেমন বিপ্লব ফ্রান্স) ছিল en.wikedia.org/wiki/Decimal_cocolate
ম্যাথু লক

76

না, নেই।


4
কি হবে Microsoft.VisualBasic.MonthName?
জোশ স্টোডোলা

14
আপনি একটি দরকারী উত্তর প্রদান করেছেন। সম্ভবত কিছু অতিরিক্ত দিকনির্দেশনা আরও উপযুক্ত হত।
মাইকেল

13
@ guillegr123 আপনি কীভাবে পরামর্শ দেবেন যে আমি নেতিবাচক প্রমাণ করতে চাই?
ডেভিড নেলসন

7
সম্ভবত এটি নেতিবাচক প্রমাণিত করে না, তবে একটি সামান্য যুক্তি কার্যকর হবে না: এনাম নেই কারণ স্থানীয়করণ করা যায় না। মাস.জানুরির কোনও রাশিয়ান প্রোগ্রামারটির অর্থ না থাকলে খুব কমই হত। এটি মাসের নামগুলি সরবরাহ করে এমন ফাংশনগুলি দেখে আরও সমর্থন করা হয় - সেগুলি সংস্কৃতি অবজেক্টে অবস্থিত।
স্যাম অক্স

8
এই প্রশ্নের একমাত্র আসল উত্তরের জন্য 10 টি ডাউনভোটকে জবাব দেওয়ার জন্য উত্সাহ দেওয়া। .NET- এ কয়েক মাসের জন্য অফিসিয়াল গণনা রয়েছে? না, নেই। এটি সামান্য অর্থবহ হবে কারণ প্রতিটি ক্যালেন্ডারে মাসের সংখ্যা একই হয় না এবং এটি কারণেই এটি কখনও চালু করা হয়নি। তবে এখানে কথাটি নয়। একটি আছে? নং প্রশ্নের উত্তর সঠিকভাবে দেওয়া হয়েছে।
এসএম

40

আমি। নেট ফ্রেমওয়ার্কে কয়েক মাসের জন্য একটি সরকারী গণনা আছে কিনা তা দেখার জন্য সন্ধান করছি।

না

হেরস এক আমি আগে প্রস্তুত। (সি # সংস্করণ)

public enum Month
{
    NotSet = 0,
    January = 1,
    February = 2,
    March = 3,
    April = 4,
    May = 5,
    June = 6,
    July = 7,
    August = 8,
    September = 9,
    October = 10,
    November = 11,
    December = 12
}

কেন ব্যবহার করবেন NotSet? কেন শুধু সাথে শুরু করবেন না January = 1? তারপরে আপনি বাকী
কাজগুলিও

4
@ টেরোসোরাস কারণ এটি তখন ডিফল্ট হবে Januaryযদি উদাহরণস্বরূপ এটি কোনও শ্রেণীর সম্পত্তি হিসাবে ব্যবহৃত হয়। বেশিরভাগ ক্ষেত্রে আমি তা চাই না, আমি এটির স্পষ্টভাবে নির্ধারিত হওয়ার আগে একটি 'নাল' মান রাখতে চাই
ওয়াল

4
তবে @ ওয়াল, যদি আপনি 'নাল' মান চান তবে আপনার এনামকে naclable হিসাবে ব্যবহার করা উচিত। আপনার সংঘর্ষে পাবলিক মাস ব্যবহার করবেন? মাস {পেতে; সেট ।
oteal

7
@ টেরোসোরাসগুলি মনে রাখবেন যে 0 অবশ্যই একটি এনামের ডিফল্ট মান হবে, যদিও এটি স্পষ্টভাবে সংজ্ঞায়িত করা হয় না। যদি NotSetবাদ দেওয়া হয় এবং January = 1(এবং বাকী মানগুলি 2, 3 ইত্যাদি হয়) তবে এই (Month)0
এনামের

একই জিনিস পোস্ট করতে এসেছেন .. এই উত্তর হওয়া উচিত। এনামটি সমস্ত ডেটটাইম ফাংশনগুলির বিরুদ্ধে ব্যবহার করা যেতে পারে যেমন ডেটটাইম.নো.মনিথ == (প্রচ্ছন্ন) মাস. জানুয়ারী
সোল

32

DateTimeFormatInfo.CurrentInfo.MonthNames(কোনও এনাম নয়, তবে আমি মনে করি যে ডেটটাইমফোর্ম্যাটিনফোর বর্তমান তথ্যসূত্রটি আপনি সাধারণভাবে সন্ধান করছেন)। আপনি যদি একটি ড্রপ-ডাউন তালিকা চান তবে আপনি এটি এটি তৈরি করতে পারেন:

List<string> monthNames = DateTimeFormatInfo.CurrentInfo.MonthNames.Take(12).ToList();
var monthSelectList = monthNames.Select(
   m => new { Id = monthNames.IndexOf(m) + 1, Name = m });

4
রিটার্ন এনিউমারেবল। রেঞ্জ (0, 11)
কিথ হ্যারিসন

var months = Enumerable.Range(0, 11).Select(m => new KeyValuePair<int, string>(m + 1, DateTimeFormatInfo.CurrentInfo.MonthNames[m]));
ড্যান ডিপ্লো

13

এই নেমস্পেসের এনাম "মাসনেমটাইপ টাইপ" এর মধ্যে একটি পাওয়া গেছে: মাইক্রোসফ্ট.সেসওয়ারমোডেল.চ্যানেলস.মেল.এক্সচেঞ্জ ওয়েলসওয়ার্স.এক্সচেঞ্জ ২০০7

লোকেশন কিন্ডা ভয় দেখায় তবে তা সেখানে রয়েছে।


আমি আপনাকে সঠিক উত্তরটি পুরষ্কার দেব, তবে আমি এটি বেস লাইব্রেরি। নেট কাঠামোর অংশ বলে মনে করি না। প্রচেষ্টা এবং সৃজনশীলতার জন্য +1।
মার্ক রজার্স

দেখে মনে হচ্ছে এটি নেট নেট 3.5 এর অংশ। কেবলমাত্র ভিজ্যুয়াল স্টুডিওতে অবজেক্ট ভিউয়ারটি খুলুন এবং "জানুয়ারী" অনুসন্ধান করুন এবং এপিআই-তে ম্যাচগুলি আসবে।
বিদালসুন

হ্যাঁ, আপনার পরামর্শ অনুসারে আমি এটি করেছি, দেখে মনে হচ্ছে এটি v3.0 ফোল্ডারে রয়েছে এবং এটি কোনও ডিফল্ট লাইব্রেরি নয়। সুতরাং আমি যখন অনুমান করি এটি লাইব্রেরিতে রয়েছে তবে এটির অবস্থানটি আদর্শের চেয়ে কম নয়। এটি যতটা প্রশ্নের প্রয়োজনীয়তা হিসাবে ধূসর অঞ্চলের কিছুতে।
মার্ক রজার্স 21

+1 নিশ্চিতভাবে চেষ্টা করার জন্য হবে। আমরা এখানে কীসের কথা বলছি?
indolentdeveloper

10

আপনি ঠিক কী অর্জন করার চেষ্টা করছেন?

যদি আপনি চান সমস্ত বছরের বানানটির বারোটি স্ট্রিং থাকে তবে তা একটি কাস্টম ফর্ম্যাট স্ট্রিংয়ের মাধ্যমে পাওয়া যায় - কোনও ডেটটাইমের কোনও উদাহরণের জন্য প্রয়োগ করা হয়,

  DateTime dt = DateTime.Parse("12 January 2009";
   dt.ToString("MMM");  // prints "Jan" 
                        // (or the right abbrev is in current culture)
   dt.ToString("MMMM"); // prints "January" 
                        // (or correct sp in current culture)

আপনি যদি কেবল অন্য কোনও অবজেক্টের ধরণের গণিত সম্পত্তি হিসাবে মাসটি নির্দিষ্ট করতে সক্ষম হতে চান তবে ডেটটাইম ক্ষেত্রের মাসের সম্পত্তিটি 1 থেকে 12 পর্যন্ত পূর্ণসংখ্যা ফেরত দেয় ...


4
আপনার উত্তরের জন্য ধন্যবাদ, আমি যদি অফিসিয়াল গণনা করে থাকি তবে আমি কেবল কৌতূহলী, কারণ আমি একটি তৈরি করতে চলেছি এবং ইতিমধ্যে একটি উপস্থিত রয়েছে কিনা তা জানতে চাই, সুতরাং আমি একটি অনিবন্ধিত গণনার পুনরায় সংজ্ঞা দিচ্ছি না ।
মার্ক রজার্স

4
আফিক নেই, কোনও নেই, (আপনি যদি এটি তৈরি করেন তবে আমি পূর্ণসংখ্যার মানগুলি স্পষ্ট করে তুলব, তাই আপনি নিশ্চিত করতে পারেন যে মাসের সংখ্যাগুলি উপস্থাপনের জন্য নেট দ্বারা ব্যবহৃত 1-12 মানগুলির মতো)
চার্লস বেতানা

3

হ্যাঁ, অবশ্যই আছে। এটি মাইক্রোসফ্ট.ভিজুয়ালবাসিক নেমস্পেসের অংশ ...

Microsoft.VisualBasic.MonthName

এবং এই নেমস্পেসের সাথে আপনার যাদের সমস্যা রয়েছে তাদের জন্য আপনার বুঝতে হবে এটি সত্যই নেট is নেট, এবং এটি কোথাও চলছে না

রেকর্ডের জন্য, MonthNameফাংশনটি অভ্যন্তরীণভাবে নিম্নলিখিতগুলিকে কল করে ...

Thread.CurrentThread.CurrentCulture.DateTimeFormat.GetMonthName

4
দুঃখিত তবে এই উত্তরটির আগের উত্তরগুলির মতোই সমস্যা রয়েছে, কারণ এটি কোনও গণনা নয়, যা এই প্রশ্নের বিষয়। তবুও, তথ্যের জন্য ধন্যবাদ।
মার্ক রজার্স

@ মার্ক: সিস্টেম.গ্লোবালাইজেশন.ডেটটাইম ফর্ম্যাটআইফোন.কুরেন্টআইনফো.মোথনামস একটি স্ট্রিং [] যা আইনিউমারেবল।
ব্যবহারকারী169771

4
@ ব্যবহারকারী169771 - স্ট্রিং [] এটি IEnumerableতবে এটি কোনও ইরেশন নয় enum। সুতরাং এটি কাজ করে না।
মার্ক রজারস

2

কিছু ক্যালেন্ডারে আসলে 12 মাসের বেশি থাকে: http://en.wikedia.org/wiki/Month তবে আমি বলতে পারি না যদি এমএস এম। নেট এ এনাম তৈরি না করায় এটি কারণ ছিল।

আমার মতো অলসদের জন্য যারা ভিবিতে একটি অনুলিপি / পেস্ট পছন্দ করতেন:

Public Enum MonthsOfYear
    January = 1
    February = 2
    March = 3
    April = 4
    May = 5
    June = 6
    July = 7
    August = 8
    September = 9
    October = 10
    November = 11
    December = 12
End Enum

1

আমি নিশ্চিতরূপে জানি না, তবে আমার কুঁচিটি নেই। ডেটটাইম.মুনথ একটি পূর্ণসংখ্যা ফেরত দেয়। যদি এই জাতীয় গণনা থাকে তবে সম্ভবত এটি ডেটটাইম দ্বারা ফিরে আসত।


1

আমি কোড সহ এর মতো কিছু সন্ধান করব as

        if (DateTime.Now.Month != 1) // can't run this test in January.

এটিতে এই ম্যাজিক নম্বরটি 1 রয়েছে। যদিও

        if (DateTime.Now.Month != DateTime.MonthsOfYear.January) 

স্ব-ডকুমেন্টিং


0

একটি এনাম বরং দরকারী হবে, তবে আপনি একটি ফর্ম্যাট দিয়ে পছন্দসই ফলাফল পেতে পারেন:

DateTime myDateTimeObject=DateTime.Now; //(for example)
string monthName = myDateTimeObject.ToString("MMMM");

এটি পুরো মাসের নাম (জানুয়ারী, ফেব্রুয়ারি ইত্যাদি) ফেরায়। myDateTimeObject.ToString("MMM")সংক্ষিপ্ত নামের জন্য ব্যবহার করুন (জানুয়ারি, ফেব্রুয়ারি, মার্চ, ইত্যাদি)।

আপনার যদি কোনও নির্দিষ্ট মাসের নম্বর থাকে, mnthNumকোনও ছাড়াই DateTimeআপনি সর্বদা এই জাতীয় কিছু ব্যবহার করতে পারেন:

string monthName=(new DateTime(2000,mnthNum,1)).ToString("MMMM");

বা

string monthName=((new DateTime(2000,1,1)).AddMonths(mnthNum-1)ToString("MMMM");

তবে কিছুটা অগোছালো মনে হচ্ছে। প্রথম উদাহরণটির প্রয়োজন mnthNum1 থেকে 12 এর মধ্যে The

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.