তারিখ বনাম ডেটটাইম


110

আমি এমন একটি প্রোগ্রামে কাজ করছি যেটির জন্য ফিরে আসার জন্য একটি ইভেন্টের তারিখ প্রয়োজন।

আমি একটি Dateনা, একটি খুঁজছি DateTime।

এমন কোন ডেটাটাইপ রয়েছে যা কেবল তারিখটি ফেরত দেয়?

উত্তর:


131

না সেখানে নেই। DateTimeসময়ের কিছু পয়েন্ট উপস্থাপন করে যা একটি তারিখ এবং একটি সময় নিয়ে গঠিত। তবে আপনি Dateসম্পত্তিটির মাধ্যমে তারিখের অংশটি পুনরুদ্ধার করতে পারেন (যা DateTimeনির্ধারিত সময়ের সাথে অন্যটি 00:00:00)।

আর তুমি মাধ্যমে পৃথক তারিখ বৈশিষ্ট্য উদ্ধার করতে পারেন Day, Monthএবং Year।


23

সময়ের জন্য সময়, অঞ্চল অঞ্চল, স্থানীয় বনাম ইত্যাদি ইত্যাদি নিয়ে চিন্তা না করে আপনার যখন সাধারণ তারিখের প্রয়োজন হয় তখন আমি সময়গুলির জন্য একটি সাধারণ তারিখ কাঠামো তৈরি করেছি

Date today = Date.Today;
Date yesterday = Date.Today.AddDays(-1);
Date independenceDay = Date.Parse("2013-07-04");

independenceDay.ToLongString();    // "Thursday, July 4, 2013"
independenceDay.ToShortString();   // "7/4/2013"
independenceDay.ToString();        // "7/4/2013"
independenceDay.ToString("s");     // "2013-07-04"
int july = independenceDay.Month;  // 7

https://github.com/claycephus/csharp-date


2
ধন্যবাদ! এটি দরকারী।
— গারফব্রাজাজ

16

দুর্ভাগ্যক্রমে। নেট বিসিএলে নেই। তারিখগুলি সাধারণত মধ্যরাতে সেট করা সময়ের সাথে ডেটটাইম অবজেক্ট হিসাবে প্রতিনিধিত্ব করা হয়।

যেমন আপনি অনুমান করতে পারেন, এর অর্থ হ'ল আপনার চারদিকে উপস্থিত পরিচারক টাইমজোন ইস্যুগুলি রয়েছে, যদিও কোনও তারিখের জন্য আপনি কোনও টাইমজোন হ্যান্ডলিং করতে চান না।


1
আপনি যদি একটি তারিখ হিসাবে একটি ডেটটাইম মানটি ব্যবহার করে থাকেন তবে প্রকারটি ইউটিসিতে সেট করুন। মোকাবেলা করার জন্য কোনও সময় অঞ্চল সমন্বয় নেই। ডেটটাইম ডেট = ডেটটাইম.স্পেসিফাইকিন্ড (ডেটটাইম.টোডে, ডেটটাইমকিন্ড, ইউটিসি);
— সানকাট 2000

হ্যাঁ, আমি অভিজ্ঞতার সাথে বলতে পারি যে dateকোনও কিছুর জন্য ব্যবহার করা খারাপ ধারণা you're যদি না আপনি 100% নিশ্চিত হন যে আপনার অ্যাপটি কেবলমাত্র এক সময় অঞ্চলে কাজ করবে। datetimeআপনার সার্ভারের টাইমজোন কনফিগারেশন যদি কখনও পরিবর্তিত হয় ... এবং আপনি কীভাবে প্রত্যাশা করেন নি সেভাবে ডেটা লেখা শুরু করে, তবে সবচেয়ে সমালোচনামূলকভাবে, সময়স্রোতের দুঃস্বপ্নগুলি এড়ানোর একটি সহজ উপায় সহ, সমালোচনামূলকভাবে উভয় দুনিয়ার সেরা হিসাবে সমস্ত কিছু সংরক্ষণ করা and Datetimeআপনাকে সেখানে বাঁচাতে পারে, dateএকেবারেই পারে না এবং আপনি যদি কখনও dateভুল টাইমজোন প্রসঙ্গে লিখতে শুরু করেন তবে মানসিকভাবে দৃending় হয়ে উঠবেন ।
— কেলসি হান্নান

2
@ কেলসিহানান আপনি অবশ্যই "জন্ম তারিখ", বা "ক্রয়ের তারিখ" ইত্যাদির সাথে লেনদেন না করেন যেখানে আপনি দেশগুলিকে সরিয়ে দেওয়ার কারণে আপনি স্পষ্টভাবে জিনিসগুলি রহস্যজনকভাবে পরিবর্তনের দিনগুলি চান না। যেমনটি বলুন, নিউজিল্যান্ডে আইরিশ বন্ধকী অ্যাপ্লিকেশনগুলি একটি এলোমেলো উদাহরণ হিসাবে প্রসেস করা।
— রজার উইলককস

9

একটি মোড়কের ক্লাস তৈরি করুন। এটার মতো কিছু:

public class Date:IEquatable<Date>,IEquatable<DateTime>
    {
        public Date(DateTime date)
        {
            value = date.Date;
        }

        public bool Equals(Date other)
        {
            return other != null && value.Equals(other.value);
        }

        public bool Equals(DateTime other)
        {
            return value.Equals(other);
        }

        public override string ToString()
        {
            return value.ToString();
        }
        public static implicit operator DateTime(Date date)
        {
            return date.value;
        }
        public static explicit operator Date(DateTime dateTime)
        {
            return new Date(dateTime);
        }

        private DateTime value;
    }

এবং আপনার যা খুশি তা প্রকাশ করুন value।


4
আমি পরামর্শ দিচ্ছি যে আপনার নির্মাণকারীর ডেটটাইম সেট করা উচিত indDateTimeKind.Unspecified তাই দয়া করে যাতে সিরিয়ালযুক্ত হয়ে গেলে তা রূপান্তর না করেই ডিজিট্রাইজড হয়ে যায় (টাইমজোনগুলির বিভিন্নের ভিত্তিতে তারিখ পরিবর্তন করতে পারে)।
— ওটসোদা

1
@ ওফহিগস ডেটটাইম সেট করুন DateTimeKind.Utc। এটি সেট করবেন নাDateTimeKind.Unspecified কারণ এটি অন্তর্ভুক্ত টাইম জোনের অফসেটের সাথে সিরিয়ালাইজড / ডিসরিয়ালাইজড হওয়ার গ্যারান্টি দেবে! সময় অঞ্চল নির্বিশেষে একটি ক্যালেন্ডারের তারিখ একই, সুতরাং সিস্টেমটিকে এটি সামঞ্জস্য করতে দেবেন না।
— সানকাট 2000

5

ডেট টাইপটি ভিবি.এনইটি (যেমন ইন্টি সংখ্যায় পরিণত হয়) ব্যবহার করে ডেটটাইম টাইপের একটি মাত্র নাম alias এই উভয় প্রকারেরই একটি তারিখের সম্পত্তি রয়েছে যা আপনাকে সময় সময় সহ 00:00:00 এ সেট করে দেয় returns


1
সত্য। ভিবি.নেট তারিখ প্রকারের জন্য এমএসডিএন ডক পৃষ্ঠাটি বলেছেন: .NET ফ্রেমওয়ার্কের সাথে সম্পর্কিত ধরণটি সিস্টেম.ডেটটাইম কাঠামো।
— মিরোক্লাভ

4

ডেটটাইমের একটি তারিখের সম্পত্তি রয়েছে যা আপনি তারিখের অংশটি আলাদা করতে ব্যবহার করতে পারেন। টোস্ট্রিং পদ্ধতিটি কেবল সময় অংশ খালি থাকলে কেবল তারিখের অংশটি প্রদর্শন করার জন্য একটি ভাল কাজ করে।


3

ডেটটাইম অবজেক্টে এমন একটি সম্পত্তি রয়েছে যা মানটির কেবলমাত্র তারিখের অংশটি দেয়।

    public static void Main()
{
    System.DateTime _Now = DateAndTime.Now;
    Console.WriteLine("The Date and Time is " + _Now);
    //will return the date and time
    Console.WriteLine("The Date Only is " + _Now.Date);
    //will return only the date
    Console.Write("Press any key to continue . . . ");
    Console.ReadKey(true);
}

এই উত্তরটি ভুল। তারিখটি DateTime0:00:00 এ নির্ধারিত সময়ের সাথে একটি ফেরত দেয়
— সার্জ সাগান

3

কোনও Dateডেটা টাইপ নেই।

তবে আপনি DateTime.Dateকেবল তারিখ পেতে ব্যবহার করতে পারেন ।

ই জি

DateTime date = DateTime.Now.Date;

একটি তারিখের কাঠামো রয়েছে এবং অবজেক্টগুলি টাইপ ডেট হিসাবে ঘোষিত হতে পারে।
— কালেব অ্যান্ডারসন

@ কালেব অ্যান্ডারসন ডিফল্ট প্রয়োগে নেই N নেট, নেই। আপনি যদি ভিবি.net ডেটের কথা বলছেন তবে এটি এখনও একটি ডেটটাইম।
— নিক এন।

DateTime.Now.Dateহিসাবে একই DateTime.Today। এমন একটি রয়েছে DateTime.UtcNowযা সর্বজনীন সময় (ইউটিসি) হিসাবে তারিখ-সময় মানটি প্রদান করে, তবে আজকের জন্য কোনও ইউটিসি সমতুল্য পদ্ধতি বা সম্পত্তি নেই; DateTimeKind.UtcNow.Dateউপযুক্ত অভিব্যক্তি।
— সানকাট 2000

2

আপনি সময়সীমাটি যে সময় অংশটি 00:00:00 আছে সেখানে ফিরে আসতে পারেন এবং কেবল এটিকে এড়িয়ে যান। তারিখগুলি টাইমস্ট্যাম্প পূর্ণসংখ্যার হিসাবে পরিচালিত হয় সুতরাং যেভাবে যাইহোক পূর্ণসংখ্যায় উপস্থিত থাকায় সময়টির সাথে তারিখটি একত্রিত করা বুদ্ধিমানের কাজ হয়।


2

এর জন্য, আপনাকে তারিখটি ব্যবহার করতে হবে, তবে সময়ের মানটিকে উপেক্ষা করতে হবে।

সাধারনত একটি তারিখের সাথে ডেটটাইম হবে 00:00:00

DateTimeধরনের একটি হয়েছে .Dateসম্পত্তি যা ফেরৎ DateTimeউপরে সময় মান সেট করা।



0

আপনি নিম্নলিখিতগুলির মধ্যে একটি ব্যবহার করতে পারেন:

DateTime.Now.ToLongDateString();
DateTime.Now.ToShortDateString();

তবে ছাত্রলীগে কোনও "তারিখ" টাইপ নেই।

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