ডেটটাইম থেকে আমি কীভাবে AM / PM মান পেতে পারি?


204

প্রশ্নে কোডটি নীচে রয়েছে:

public static string ChangePersianDate(DateTime dateTime)
{
    System.Globalization.GregorianCalendar PC = new System.Globalization.GregorianCalendar();
    PC.CalendarType = System.Globalization.GregorianCalendarTypes.USEnglish;
    return
    PC.GetYear(dateTime).ToString()
    + "/"
    + PC.GetMonth(dateTime).ToString()
    + "/"
    + PC.GetDayOfMonth(dateTime).ToString()
    + ""
    + PC.GetHour(dateTime).ToString()
    + ":"
    + PC.GetMinute(dateTime).ToString()
    + ":"
    + PC.GetSecond(dateTime).ToString()
    + " "
    ????????????????
}

আমি কীভাবে dateTimeমান / এএম / থেকে পেতে পারি ?


24
এর DateTimeচেয়ে ফর্ম্যাট করার আরও অনেক ভাল উপায় আছে । দেখুন msdn.microsoft.com/en-us/library/8kb3ddd4.aspx
ChrisF

স্রেফ ব্যবহার করুনdateTime.ToString("tt");
ডেভিড যিশু

উত্তর:


368

কেমন:

dateTime.ToString("tt", CultureInfo.InvariantCulture);

3
এই অধিকারটি পেতে আপনাকে নতুন সিস্টেম.গ্লোবালাইজেশন.ক্লাকচারআইনফো ("এন-ইউএস") যুক্ত করতে হবে (যদি আপনি ইতিমধ্যে কোনও মার্কিন প্রসঙ্গে থ্রেডটি চালাচ্ছেন না)
থমাস

1
@ থমাস - ভাল পয়েন্ট নির্দিষ্ট করতে এখনই সম্পাদিতCultureInfo.InvariantCulture
অ্যান্ডি

8
ToString("tt", System.Globalization.CultureInfo.InvariantCulture)
ইন্ডিটেক সলিউশনগুলি

তারিখ থেকে এটি / এএম / পিএম পাওয়ার জন্য। তবে আমি যদি কোনও তারিখে এএম থেকে প্রধানমন্ত্রী পরিবর্তন করতে চাই। তাহলে আমি কী করব?
অজয় শর্মা

2
@ অজয়শর্মা ফর্ম্যাট মূল্যায়নের 12 ঘন্টা আগে যোগ করুন। DateTime.Now.AddHours(12).ToString("tt", CultureInfo.InvariantCulture)
এএক্সএমআইএম

107
string.Format("{0:hh:mm:ss tt}", DateTime.Now)

এটি আপনাকে সময়ের স্ট্রিং মান দেয় should tt এ am / pm এম্পেন্ড করা উচিত।

আপনি সম্পর্কিত বিষয়টিও দেখতে পারেন:

দিনের বর্তমান সময়টা কীভাবে পাবেন?


8
এটি hhআপনার বর্তমান প্রতিনিধিত্ব হিসাবে 24 ঘন্টা সময় সকাল এবং সন্ধ্যা সাড়ে with টার সময় হওয়া উচিত যা কিছুটা অর্থহীন
পছন্দ করেননি

1
@ লুকেমসিগ্রিগোর আপনার পরামর্শ অনুসারে আমি উত্তরটি সংশোধন করেছি।
ডক্টর জোন্স

46

DateTimeসবসময় "আমেরিকান" (গ্রেগরিয়ান) ক্যালেন্ডার অভ্যন্তরীণভাবে হওয়া উচিত। সুতরাং আপনি যদি

var str = dateTime.ToString(@"yyyy/MM/dd hh:mm:ss tt", new CultureInfo("en-US"));

আপনি যা চান তা অনেক কম লাইনে পাওয়া উচিত।


33

স্ট্রিং ফর্ম্যাট ব্যবহার করে খুব সহজ

চালু .ToSTring("") :

  • যদি আপনি "এইচএইচ" ব্যবহার করেন - >> ঘন্টাটি, 01 থেকে 12 পর্যন্ত 12-ঘন্টা ঘড়ি ব্যবহার করে।

  • যদি আপনি "এইচ এইচ" ব্যবহার করেন - >> ঘন্টা, ২0 ঘন্টা থেকে ২0 ঘন্টা অবধি ব্যবহার করুন।

  • যদি আপনি "টিটি" যোগ করেন - >> এম / পিএম ডিজাইনার।

উদাহরণটি 23:12 থেকে 11:12 পিএম রূপান্তর করা:

DateTime d = new DateTime(1, 1, 1, 23, 12, 0);
var res = d.ToString("hh:mm tt");   // this show  11:12 Pm
var res2 = d.ToString("HH:mm");  // this show  23:12

Console.WriteLine(res);
Console.WriteLine(res2);

Console.Read();

একটি সেকেন্ড অপেক্ষা করুন যা আপনাকে অন্য কোনও কিছুর যত্ন নেওয়া উচিত নয় হ'ল সিস্টেম সংস্কৃতি কারণ অন্যান্য কোডের সাথে উইন্ডোজগুলিতে একই কোড কার্যকর করা হয়েছে বিশেষ সংস্কৃতির ল্যাঙ্গেজ সহ বিশেষ কোড একই কোডের সাথে পৃথক ফলাফল তৈরি করবে

আরবি ল্যাঙ্গেজ সংস্কৃতিতে সেট করা উইন্ডোগুলির উদাহরণটি এরকম প্রদর্শিত হবে:

// 23:12 ম

ম এর অর্থ সন্ধ্যা (مساءার প্রথম লেটার)।

অন্য সিস্টেম সংস্কৃতিতে উইন্ডোজ আঞ্চলিক এবং ভাষা বিকল্পের উপর কী সেট করা আছে তার উপর নির্ভর করে, এটি দেখায় // 23:12 ডু।

আপনি উইন্ডোজ আঞ্চলিক এবং ভাষা -> বর্তমান ফর্ম্যাট (কম্বোবক্স) এর অধীনে উইন্ডোজ কন্ট্রোল প্যানেলে বিভিন্ন ফর্ম্যাটের মধ্যে পরিবর্তন করতে পারেন এবং পরিবর্তন করতে পারেন ... এটি আপনার অ্যাপ্লিকেশনটির পুনর্নির্মাণ (সম্পাদন) করতে প্রয়োগ করুন এবং আইএএম কী বলছেন তা দেখুন।

সুতরাং> বর্তমান সিস্টেমের সংস্কৃতিটি ইংরাজীতে সেট না করা থাকলে আমি ইংরাজির ইভেন্টে এম এবং পিএম শব্দগুলি প্রদর্শন করার জন্য কে জোর করতে পারি?

কেবল দুটি লাইন যুক্ত করে সহজ: ->

using System.Globalization;আপনার কোডের উপরে প্রথম পদক্ষেপ যুক্ত করুন

এবং পূর্ববর্তী কোডটি এর মতো হতে পারে:

DateTime d = new DateTime(1, 1, 1, 23, 12, 0);
var res = d.ToString("HH:mm tt", CultureInfo.InvariantCulture); // this show  11:12 Pm

ইনভেরেন্টকালচার => ডিফল্ট ইংলিশ ফর্ম্যাট ব্যবহার করে।

আরেকটি প্রশ্ন আমি আরবি বা নির্দিষ্ট ভাষায় সন্ধ্যা হতে চাই, যদিও আমি উইন্ডোজটি ইংরাজী (বা অন্য ভাষা) আঞ্চলিক বিন্যাসে সেট করে নাও?

আরবি দৃষ্টান্তের জন্য সতর্কতা:

DateTime d = new DateTime(1, 1, 1, 23, 12, 0);
var res = d.ToString("HH:mm tt", CultureInfo.CreateSpecificCulture("ar-AE")); 

এটি প্রদর্শিত হবে // 23:12 ম

ইভেন্টটি যদি আমার সিস্টেমটি একটি ইংরেজী অঞ্চল বিন্যাসে সেট করা থাকে। আপনি যদি অন্য ভাষার ফর্ম্যাট করতে চান তবে আপনি "আর-এই" পরিবর্তন করতে পারেন। প্রতিটি ভাষার একটি তালিকা এবং এর বিন্যাস রয়েছে।

উদাহরণ:

ar          ar-SA       Arabic
ar-BH       ar-BH       Arabic (Bahrain)
ar-DZ       ar-DZ       Arabic (Algeria)
ar-EG       ar-EG       Arabic (Egypt)

big list...

আপনার যদি অন্য প্রশ্ন থাকে তবে আমাকে জানান।


আমি যদি "11:12 PM" দেখতে চাই? আমি মনে করি আপনার উত্তরটি অসম্পূর্ণ।
Fjodr

18

আমি জানি এটি খুব দেরিতে বলে মনে হতে পারে .. তবে এটি কোনও ব্যক্তিকে সাহায্য করতে পারে

আমি এএম প্রধানমন্ত্রীর তারিখের অংশটি পেতে চেয়েছিলাম, তাই অ্যান্ডির পরামর্শ অনুযায়ী আমি এটি ব্যবহার করেছি:

dateTime.ToString("tt");

আমি এই ফাইলটি আমার ফাইলগুলি সংরক্ষণের জন্য একটি পথ তৈরিতে ব্যবহার করেছি .. আমি আমার অনুমানগুলি তৈরি করেছিলাম যে আমি AM বা PM তেমন পাব এবং অন্য কিছুই পাব না !!

তবে যখন আমি একটি পিসি ব্যবহার করি যে এর সংস্কৃতিটি ইংরেজি নয় .. (আমার ক্ষেত্রে আরাবিক) .. আমার অ্যাপ্লিকেশনটি "টিটি" বিন্যাস ছাড়াই ব্যর্থ হয়েছে এএম বা প্রধানমন্ত্রী নয় (এম বা সি) নতুন কিছু ফিরিয়ে দিয়েছে ..

সুতরাং এর সমাধানটি হ'ল নিম্নলিখিত যুক্তি যুক্ত করে সংস্কৃতিটিকে উপেক্ষা করা:

dateTime.ToString("tt", CultureInfo.InvariantCulture);

.. অবশ্যই আপনাকে যোগ করতে হবে: সিস্টেম.গ্লোবালাইজেশন ব্যবহার করে; আপনার ফাইলের শীর্ষে আমি আশা করি যে কাউকে সাহায্য করবে :)


3
এটি আমাকে আজ যেভাবে সহায়তা করেছে তা যুক্ত করার জন্য ধন্যবাদ - আমি আমার দেব পরিবেশে এবং এএমটি রিমোট সার্ভারে পেয়ে যাচ্ছিলাম এবং এই পোস্টটি পড়ার আগে পর্যন্ত Google এর সাথে প্রচুর পরিমাণে সাহায্য পেল না help এমনকি ডটনেপলসও বলেছে "টিটি আউটপুটে কোনও পিরিয়ড নেই। আপনার যদি আপনার এএম বা প্রধানমন্ত্রী সময়কাল প্রয়োজন হয়, আপনি স্ট্রিং ম্যানিপুলেট করতে হবে।" কোনটি অবশ্যই আমার ক্ষেত্রে সম্পূর্ণ অসত্য ছিল ...
কিউইসনগোডেডি

13

এটি বেশ সহজ

  Date someDate = new DateTime();
  string timeOfDay = someDate.ToString("hh:mm tt"); 
  // hh - shows hour and mm - shows minute - tt - shows AM or PM

10
+ PC.GetHour(datetime) > 11 ? "pm" : "am"

আপনার উদাহরণের জন্য তবে ডেটটাইম ফর্ম্যাট করার আরও ভাল উপায় আছে।


@ ক্রিসএফ উপরের লিঙ্কটি দেখুন। মূলত আপনি ডেটটাইম অবজেক্টে টসস্ট্রিং পদ্ধতিতে ব্যবহার করতে পারেন এবং এটিকে একটি ফর্ম্যাট পাস করতে পারেন। এইভাবে আপনি ডেটটাইম কল করবেন না o আপনি আপনার কোড উদাহরণে যেমন করছেন তেমন স্ট্রিং বহুবিধবার।
কেভিন হোল্ডিচ

2
এটি দেখতে যতটা কুৎসিত মনে হতে পারে, এটি বিভিন্ন সংস্কৃতির সাথে জড়িত হওয়ার চেয়ে অনেক সহজ এবং আরও সুসংগত উপায়। উদাহরণস্বরূপ, অনেক সংস্কৃতি 24 ঘন্টা সময় দেখায় এবং এএম / প্রধানমন্ত্রীকে মোটেই অন্তর্ভুক্ত করে না এবং টোস্ট্রিং ("টিটি") একটি খালি স্ট্রিং উত্পাদন করে।
নাথানছেরে


4

কিছু একটা bool isPM = GetHour() > 11। তবে আপনি যদি কোনও তারিখকে স্ট্রিংয়ে ফর্ম্যাট করতে চান তবে আপনার নিজের এটি করার দরকার নেই। তার জন্য তারিখ বিন্যাসকরণ ফাংশন ব্যবহার করুন।


1
সত্যি বলতে, আমি এমনকি isPM () পদ্ধতিটি প্রদর্শন করতে চাই না। ডেটটাইম অবজেক্টকে বৈধভাবে ফর্ম্যাট করার একমাত্র উপায় হ'ল ফর্ম্যাটরগুলি।
richb01

@ richb01 আমি একমত নই একমাত্র নিরাপদ উপায় হ'ল সকাল / বিকাল মোটেও ব্যবহার করা এবং 24 ঘন্টা ফর্ম্যাটটি ব্যবহার না করা, সর্বদা আক্রমণকারী সংস্কৃতি সংযোজন করা বা ম্যানুয়ালি করা। "am" এবং "pm" উদাহরণস্বরূপ জার্মান ভাষায় ভরাট হয় না, এটি খালি। যদি কেউ স্ট্রিং.ফর্ম্যাট ("{0: এইচ: মিমি টিটি}", ডেটটাইম। এখন) লিখেন তবে তারা কেবল ভুল সময় পেয়ে যায়
ক্রিস্টোফ

1

আপনি এটি এইভাবে পরীক্ষা করতে পারেন

Console.WriteLine(DateTime.Now.ToString("tt "));

আউটপুটটি এরকম হবে:

AM

অথবা

PM

1
আপনি কি জানেন যে আপনি গৃহীত উত্তরের কোডটি ব্যবহার করছেন?
থমাস আইয়ুব

প্রিয় @ থমাস আইয়ুব, যে কোডটি লেখা আছে তা আমার প্রকল্পের উত্সের একটি লাইন থেকে। এটি এখনই কাজ করছে।
ইয়াজারলু

দুঃখিত, এটি একটি খুব খারাপ উত্তর, বিশেষ করে কারণ পরিচয় করিয়ে দেওয়াNow
ওল্ফ

0

এখানে একটি সহজ উপায় যা আপনি সময় ফর্ম্যাটটি লিখতে পারেন (hh:mm:ss tt)এবং আপনার ইচ্ছামত আলাদাভাবে প্রদর্শন করতে পারেন।

string time = DateTime.Now.Hour.ToString("00") + ":" + DateTime.Now.Minute.ToString("00") + ":" + DateTime.Now.Second.ToString("00") + DateTime.Now.ToString(" tt");

বা কেবল সহজভাবে:

 DateTime.Now.ToString("hh:mm:ss tt")

0

@ অ্যান্ডির উত্তর ঠিক আছে। তবে আপনি যদি 24 ঘন্টা বিন্যাস ছাড়াই সময় দেখাতে চান তবে আপনি এইভাবে অনুসরণ করতে পারেন

string dateTime = DateTime.Now.ToString("hh:mm:ss tt", CultureInfo.InvariantCulture);

এর পরে, আপনার "10:35:20 অপরাহ্ন" বা "10:35:20 এএম" এর মতো সময় পাওয়া উচিত



-2

এখানে কয়েকটি উদাহরণ কোড রয়েছে:

DateTime time = DateTime.Now;
string AM_PM;
AM_PM = time.ToLongTimeString().Substring(time.ToLongTimeString().Length - 2);

2
এটি নির্ভরযোগ্য সমাধান নয়। ToLongTimeString()বর্তমান থ্রেড সংস্কৃতির উপর ভিত্তি করে একটি মান প্রদান করে। এবং অন্য উত্তর দেওয়া অনুরূপ সমাধান কিছু অসদৃশ, এই কোড হবে এমনকি যদি আপনাকে থ্রেড সংস্কৃতি সেট কাজ নয় InvariantCulture, কারণ পরিবর্তিত সংস্কৃতি এর LongTimePattern-যেটা কি ফেরত মান নির্ধারণ করে ToLongTimeString()-is HH:mm:ss
জো ফারেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.