মাসের শুরুতে ডেটটাইম সেট করুন


99

আমি কীভাবে সি # তে মাসের প্রথমটিতে একটি ডেটটাইম সেট করতে পারি?


চলতি মাসের শুরু?
— ফিল গণ

4
সুতরাং এটি সম্পর্কে কী জানা যায়, .. প্রতিমাসের তারিখটি শুরু হয় 1..আমাদের মাসের শুরুতে তিনি দিনটি জানতে চান
— শেখরপ্রো

আমরা জানুয়ারী হয়, তাহলে এটি 01 জানুয়ারি 2011 এবং ফেব্রুয়ারী, তারপরে 01 ফেব্রুয়ারি 2011 দেখানো উচিত
— শেখার

আপনি মধ্যে সন্ধান করতে পারেন এই
— V4Vendetta

উত্তর:


206
var now = DateTime.Now;
var startOfMonth = new DateTime(now.Year,now.Month,1);

62
একটি টিপ: সর্বদা DateTime.Nowএকটি পরিবর্তনশীল মধ্যে রাখা এবং আপনি যদি বারবার মান ব্যবহার করতে যাবেন তা ব্যবহার করুন। এই কোডটি ঠিক মধ্যরাতের আশেপাশে কার্যকর করা হলে ত্রুটি হওয়ার খুব কম সম্ভাবনা রয়েছে; DateTime.Nowমধ্যরাতের প্রতিটি দিকে দুটি কল সংঘটিত হতে পারে সম্ভবত প্রতিকূল প্রতিক্রিয়া তৈরি করে।
— ফ্রেডরিক মের্ক

ভাল যুক্তি. আমি মনে করি নতুন বছরের প্রাক্কালে মধ্যরাত হ'ল এমন সময় যা সম্ভবত সম্ভাব্য সমস্যার সৃষ্টি করবে।
— নিক জোন্স

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

4
আপনি "ডেটটাইম" এর পরিবর্তে "ভার" ব্যবহার করছেন কেন?
— করতেই হবে 1234

4
@ মার্কটিহিজার্ড 1234 মূলত সি # প্রোগ্রামার অলস হওয়ার কারণে। এটি কেবলমাত্র তিনটি অক্ষর হওয়ায় আমরা কেবল যখনই সম্ভব var ব্যবহার করি। অন্যান্য কারণ রয়েছে তবে আমি মনে করি এটি বেশিরভাগ লোকেরা এটি করার প্রধান কারণ।
— টিম পোহলমান

41

এরকম কিছু কাজ করবে

DateTime firstDay = DateTime.Today.AddDays(1 - DateTime.Today.Day);

4
ফ্রেড্রিক মরক যেমন নিক জোনসের উত্তরে মন্তব্য করেছেন, মাসের শেষ রাতে মধ্যরাতের আশেপাশে কোনও সমস্যার নিশ্চয়তা না দেওয়ার জন্য আপনি যখন একাধিকবার ব্যবহার করছেন তখন ডেটটাইমটি কোনও পরিবর্তনশীল হিসাবে সংরক্ষণ করা ভাল। সুতরাং: ডেটটাইম আজ = তারিখটাইম। আজ; ডেটটাইম ফার্স্টডে = আজ.এডডয়েস (1- আজ ডেইডে);
— ডগ এস


9

পার্টিতে কিছুটা দেরি হলেও এখানে একটি এক্সটেনশন পদ্ধতি রয়েছে যা আমার জন্য কৌশলটি করেছে

public static class DateTimeExtensions
{
  public static DateTime FirstDayOfMonth(this DateTime dt)
  {
    return new DateTime(dt.Year, dt.Month, 1);
  }
}

4
এটির সাথে সমস্যাটি হ'ল এটি আসল টাইমজোনটি রাখে না।
— মাইক কোল

2
DateTime now = DateTime.Now;
DateTime date = new DateTime(now.Year, now.Month, 1);

আপনি ডেটটাইম.এর পরিবর্তে অন্য যে কোনও কিছু ব্যবহার করতে পারেন


2

আমি নিক উত্তর এবং এসও-তে অন্যদের উপর ভিত্তি করে কিছু এক্সটেনশন পদ্ধতি তৈরি করেছি

public static class DateTimeExtensions 
{
    /// <summary>
    /// get the datetime of the start of the week
    /// </summary>
    /// <param name="dt"></param>
    /// <param name="startOfWeek"></param>
    /// <returns></returns>
    /// <example>
    /// DateTime dt = DateTime.Now.StartOfWeek(DayOfWeek.Monday);
    /// DateTime dt = DateTime.Now.StartOfWeek(DayOfWeek.Sunday);
    /// </example>
    /// <remarks>http://stackoverflow.com/a/38064/428061</remarks>
    public static System.DateTime StartOfWeek(this System.DateTime dt, DayOfWeek startOfWeek)
    {
        var diff = dt.DayOfWeek - startOfWeek;
        if (diff < 0)
            diff += 7;

        return dt.AddDays(-1 * diff).Date;
    }

    /// <summary>
    /// get the datetime of the start of the month
    /// </summary>
    /// <param name="dt"></param>
    /// <returns></returns>
    /// <remarks>http://stackoverflow.com/a/5002582/428061</remarks>
    public static System.DateTime StartOfMonth(this System.DateTime dt) =>
        new System.DateTime(dt.Year, dt.Month, 1);


    /// <summary>
    /// get datetime of the start of the year
    /// </summary>
    /// <param name="dt"></param>
    /// <returns></returns>
    public static System.DateTime StartOfYear(this System.DateTime dt) => 
         new System.DateTime(dt.Year, 1, 1);

}

0

এটি দক্ষ এবং সঠিক হওয়া উচিত:

DateTime RoundDateTimeToMonth(DateTime time)
{
    long ticks = time.Ticks;
    return new DateTime((ticks / TimeSpan.TicksPerDay - time.Day + 1) * TimeSpan.TicksPerDay, time.Kind);
}

এখানে ticks / TimeSpan.TicksPerDayআয় দেওয়া পর্যন্ত পূর্ণ দিনের গণনা timeএবং - time.Day + 1রিসেট মাসের শুরুতে এই গণনা।


0

আশা করি এটি আপনাকে সহায়তা করবে।

পাঠ্যবক্স 1.টিেক্সট = "01-" + ডেটটাইম.নো।


-2
var currentDate = DateTime.UtcNow.Date;
var startDateTimeOfCurrentMonth = currentDate.AddDays(-(currentDate.Day - 1));

4
এটি ফুবোর উত্তরের বেশ সদৃশ, আপনার কি মনে হয় না?
— টমাস আইয়ুব

4
যদিও এই কোডটি সমস্যার সমাধান করতে পারে তবে এটি কেন / কীভাবে এটি কাজ করে তা ব্যাখ্যা করে একটি ব্যাখ্যা যুক্ত করতে সর্বদা উত্সাহিত হয়।
— বিডিএল

@ থমাস আইয়ুব - না এটি ফুবোর উত্তরের যথাযথ নকল নয় কারণ এতে সময় পোর্ট থাকবে না।
— জে শাহ

@ বিডিএল - আমি মনে করি এটি বুঝতে খুব সহজ যেটির ব্যাখ্যা প্রয়োজন হয় না। তবে এফওয়াইআই, আমি বর্তমান ইউটিসি তারিখ নিয়েছি এবং তার পরে বিয়োগ করে (বর্তমান তারিখের দিনগুলি - 1) মাসের শুরুর তারিখ পাওয়ার জন্য অর্থাৎ 1 (0 নয় এবং সে কারণেই আমি 1 টি বিয়োগ করেছি)। এবং হ্যাঁ, এটি অবশ্যই সমস্যার সমাধান করবে।
— জয় শাহ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.