সপ্তাহে (রবিবার এবং সোমবার উভয়ই) সি # তে কেবলমাত্র বর্তমান সময়টি জেনে আমি কীভাবে শুরু করব?
কিছুটা এইরকম:
DateTime.Now.StartWeek(Monday);
সপ্তাহে (রবিবার এবং সোমবার উভয়ই) সি # তে কেবলমাত্র বর্তমান সময়টি জেনে আমি কীভাবে শুরু করব?
কিছুটা এইরকম:
DateTime.Now.StartWeek(Monday);
উত্তর:
একটি এক্সটেনশন পদ্ধতি ব্যবহার করুন। তারা সবকিছুর উত্তর, আপনি জানেন! ;)
public static class DateTimeExtensions
{
public static DateTime StartOfWeek(this DateTime dt, DayOfWeek startOfWeek)
{
int diff = (7 + (dt.DayOfWeek - startOfWeek)) % 7;
return dt.AddDays(-1 * diff).Date;
}
}
যা নিম্নলিখিত হিসাবে ব্যবহার করা যেতে পারে:
DateTime dt = DateTime.Now.StartOfWeek(DayOfWeek.Monday);
DateTime dt = DateTime.Now.StartOfWeek(DayOfWeek.Sunday);
dt
ইউটিসি এবং ইতিমধ্যে সপ্তাহে যেমন শুরু হয় 2012-09-02 16:00:00Z
যা Mon, 03 Sep 2012 00:00:00
স্থানীয় সময়। সুতরাং এটি dt
স্থানীয় সময় রূপান্তর বা কিছু স্মার্ট কিছু করতে হবে। ইনপুটটি ইউটিসি হলে ফলাফলটি ইউটিসি হিসাবে ফেরত দেওয়া দরকার।
DateTime.Parse("2012-09-02 16:00:00Z")
স্থানীয় সময় সমতুল্যকে প্রদান করে এবং এই পদ্ধতিটি স্থানীয় সময় হিসাবে সঠিকভাবে একই সময়ে ফিরে আসে। আপনি যদি DateTime.Parse("2012-09-02 16:00:00Z").ToUniversalTime()
ইউটিসি সময় স্পষ্টভাবে পাস করতে ব্যবহার করেন তবে এই পদ্ধতিটি ইউটিসির সময় হিসাবে 16 দিন আগে 16 দিন আগে সঠিকভাবে ফিরে আসে। আমি যেমন আশা করছিলাম ঠিক তেমন কাজ করছে।
dt
। আমি ব্যবহার করেছিint diff = dt.Date.DayOfWeek - startOfWeek;
আমি যে দ্রুততম উপায়টি নিয়ে আসতে পারি তা হ'ল:
var sunday = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek);
আপনি যদি সপ্তাহের অন্য কোনও দিনটি আপনার শুরুর তারিখ হতে চান তবে আপনাকে যা করতে হবে তা হ'ল ডে-অফ-উইকের মানটি শেষ পর্যন্ত যুক্ত করতে হবে
var monday = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek + (int)DayOfWeek.Monday);
var tuesday = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek + (int)DayOfWeek.Tuesday);
আরও কিছুটা ভার্বোজ এবং সংস্কৃতি সচেতন:
System.Globalization.CultureInfo ci =
System.Threading.Thread.CurrentThread.CurrentCulture;
DayOfWeek fdow = ci.DateTimeFormat.FirstDayOfWeek;
DayOfWeek today = DateTime.Now.DayOfWeek;
DateTime sow = DateTime.Now.AddDays(-(today - fdow)).Date;
CultureInfo.CurrentCulture
এটিকে থ্রেড থেকে টানানোর পরিবর্তে বর্তমান সংস্কৃতিটি ব্যবহার করে পেতে পারেন । এটি অ্যাক্সেস করার এক অদ্ভুত উপায় বলে মনে হচ্ছে।
Now
সম্পত্তিটি দু'বার কল করা বিপজ্জনক । যদি বর্তমান সময়টি দুটি কলের মধ্যে 24:00 (বা 12:00 মধ্যরাত) কেটে যায় তবে তারিখটি পরিবর্তন হয়ে যাবে।
ফ্লুয়েন্ট ডেটটাইম ব্যবহার :
var monday = DateTime.Now.Previous(DayOfWeek.Monday);
var sunday = DateTime.Now.Previous(DayOfWeek.Sunday);
public static DateTime Previous(this DateTime start, DayOfWeek day) { do { start = start.PreviousDay(); } while (start.DayOfWeek != day); return start; }
কুরুচিপূর্ণ তবে এটি কমপক্ষে সঠিক তারিখগুলি দেয়
সিস্টেম দ্বারা নির্ধারিত সপ্তাহের শুরু সহ:
public static DateTime FirstDateInWeek(this DateTime dt)
{
while (dt.DayOfWeek != System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat.FirstDayOfWeek)
dt = dt.AddDays(-1);
return dt;
}
ছাড়া:
public static DateTime FirstDateInWeek(this DateTime dt, DayOfWeek weekStartDay)
{
while (dt.DayOfWeek != weekStartDay)
dt = dt.AddDays(-1);
return dt;
}
আসুন সংস্কৃতি-নিরাপদ উত্তর এবং এক্সটেনশন পদ্ধতির উত্তর একত্রিত করুন:
public static class DateTimeExtensions
{
public static DateTime StartOfWeek(this DateTime dt, DayOfWeek startOfWeek)
{
System.Globalization.CultureInfo ci = System.Threading.Thread.CurrentThread.CurrentCulture;
DayOfWeek fdow = ci.DateTimeFormat.FirstDayOfWeek;
return DateTime.Today.AddDays(-(DateTime.Today.DayOfWeek- fdow));
}
}
dt
পরিবর্তে ব্যবহার করার জন্য DateTime.Today
, (offset + 7) % 7
একটি নেতিবাচক অফসেট নিশ্চিত করার জন্য গণিতকে আবৃত করার জন্য, একটি একক-পরামিতি পদ্ধতি ওভারলোড যা বর্তমান সংস্কৃতিটিকে তর্ক FirstDayOfWeek
হিসাবে পাস করে startOfWeek
এবং সম্ভবত (অনুমানের উপর নির্ভর করে) একটি জোর করে বলার জন্য এটি লেখা উচিত ছিল শূন্য একটি 7 দিনের অফসেটে অফসেট, যাতে ইতিমধ্যে মঙ্গলবার যদি "গত মঙ্গলবার" আজ ফিরে না আসে।
এটি হ্যাকের সামান্য কিছু হতে পারে তবে আপনি .ডাইফউইক সম্পত্তিটি একটি ইনটকে ফেলে দিতে পারেন (এটি একটি এনাম এবং যেহেতু এটির অন্তর্নিহিত ডেটা টাইপটি এটিতে পূর্বনির্ধারিতভাবে পরিবর্তিত হয়েছিল) এবং সপ্তাহের আগের শুরুটি নির্ধারণ করতে এটি ব্যবহার করুন ।
এটি দিবস অফ উইক এনামে রবিবার শুরু হওয়া সপ্তাহে প্রদর্শিত হবে, সুতরাং আমরা যদি এই মানটি থেকে 1 টি বিয়োগ করি তবে বর্তমান তারিখের আগে সোমবার কত দিনের সমান হবে। আমাদের রবিবার (0) এর সমান 7 টিরও মানচিত্রের প্রয়োজন তাই দেওয়া 1 - 7 = -6 রবিবারটি পূর্ববর্তী সোমবারে মানচিত্র করবে: -
DateTime now = DateTime.Now;
int dayOfWeek = (int)now.DayOfWeek;
dayOfWeek = dayOfWeek == 0 ? 7 : dayOfWeek;
DateTime startOfWeek = now.AddDays(1 - (int)now.DayOfWeek);
আগের রবিবারের কোডটি সহজ কারণ আমাদের এই সমন্বয় করতে হবে না: -
DateTime now = DateTime.Now;
int dayOfWeek = (int)now.DayOfWeek;
DateTime startOfWeek = now.AddDays(-(int)now.DayOfWeek);
সোমবারের জন্য
DateTime startAtMonday = DateTime.Now.AddDays(DayOfWeek.Monday - DateTime.Now.DayOfWeek);
রবিবারের জন্য
DateTime startAtSunday = DateTime.Now.AddDays(DayOfWeek.Sunday- DateTime.Now.DayOfWeek);
using System;
using System.Globalization;
namespace MySpace
{
public static class DateTimeExtention
{
// ToDo: Need to provide culturaly neutral versions.
public static DateTime GetStartOfWeek(this DateTime dt)
{
DateTime ndt = dt.Subtract(TimeSpan.FromDays((int)dt.DayOfWeek));
return new DateTime(ndt.Year, ndt.Month, ndt.Day, 0, 0, 0, 0);
}
public static DateTime GetEndOfWeek(this DateTime dt)
{
DateTime ndt = dt.GetStartOfWeek().AddDays(6);
return new DateTime(ndt.Year, ndt.Month, ndt.Day, 23, 59, 59, 999);
}
public static DateTime GetStartOfWeek(this DateTime dt, int year, int week)
{
DateTime dayInWeek = new DateTime(year, 1, 1).AddDays((week - 1) * 7);
return dayInWeek.GetStartOfWeek();
}
public static DateTime GetEndOfWeek(this DateTime dt, int year, int week)
{
DateTime dayInWeek = new DateTime(year, 1, 1).AddDays((week - 1) * 7);
return dayInWeek.GetEndOfWeek();
}
}
}
বিশ্বায়নের সাথে এগুলি একসাথে রাখা এবং আমাদের যে কল রয়েছে তার অংশ হিসাবে সপ্তাহের প্রথম দিন নির্দিষ্ট করার অনুমতি দেওয়া
public static DateTime StartOfWeek ( this DateTime dt, DayOfWeek? firstDayOfWeek )
{
DayOfWeek fdow;
if ( firstDayOfWeek.HasValue )
{
fdow = firstDayOfWeek.Value;
}
else
{
System.Globalization.CultureInfo ci = System.Threading.Thread.CurrentThread.CurrentCulture;
fdow = ci.DateTimeFormat.FirstDayOfWeek;
}
int diff = dt.DayOfWeek - fdow;
if ( diff < 0 )
{
diff += 7;
}
return dt.AddDays( -1 * diff ).Date;
}
এটি আপনাকে সপ্তাহের প্রথম রবিবার মধ্যরাত দেবে:
DateTime t = DateTime.Now;
t -= new TimeSpan ((int) t.DayOfWeek, t.Hour, t.Minute, t.Second);
এটি আপনাকে মধ্যরাতে প্রথম সোমবার দেয়:
DateTime t = DateTime.Now;
t -= new TimeSpan ((int) t.DayOfWeek - 1, t.Hour, t.Minute, t.Second);
সি # দিয়ে এটি ব্যবহার করে দেখুন। এই কোডের সাহায্যে আপনি প্রদত্ত সপ্তাহের প্রথম তারিখ এবং শেষ তারিখ উভয়ই পেতে পারেন Sunday এখানে রবিবার প্রথম দিন এবং শনিবার শেষ দিন তবে আপনি উভয় দিনের সংস্কৃতি অনুযায়ী সেট করতে পারেন
DateTime firstDate = GetFirstDateOfWeek(DateTime.Parse("05/09/2012").Date,DayOfWeek.Sunday);
DateTime lastDate = GetLastDateOfWeek(DateTime.Parse("05/09/2012").Date, DayOfWeek.Saturday);
public static DateTime GetFirstDateOfWeek(DateTime dayInWeek, DayOfWeek firstDay)
{
DateTime firstDayInWeek = dayInWeek.Date;
while (firstDayInWeek.DayOfWeek != firstDay)
firstDayInWeek = firstDayInWeek.AddDays(-1);
return firstDayInWeek;
}
public static DateTime GetLastDateOfWeek(DateTime dayInWeek, DayOfWeek firstDay)
{
DateTime lastDayInWeek = dayInWeek.Date;
while (lastDayInWeek.DayOfWeek != firstDay)
lastDayInWeek = lastDayInWeek.AddDays(1);
return lastDayInWeek;
}
বেশ কয়েকবার চেষ্টা করেও সোমবার থেকে শুরু হয়ে সপ্তাহের মধ্যে দিয়ে সমস্যার সমাধান করেনি, ফলে আগামী রবিবার আমাকে আসন্ন সোমবার দেবে। সুতরাং আমি এটিকে কিছুটা সংশোধন করেছি এবং এ কোডটি দিয়ে এটি কাজ করেছিলাম:
int delta = DayOfWeek.Monday - DateTime.Now.DayOfWeek;
DateTime monday = DateTime.Now.AddDays(delta == 1 ? -6 : delta);
return monday;
dt.AddDays(DayOfWeek.Monday - dt.DayOfWeek);
পদক্ষেপ 1: একটি স্ট্যাটিক ক্লাস তৈরি করুন
public static class TIMEE
{
public static DateTime StartOfWeek(this DateTime dt, DayOfWeek startOfWeek)
{
int diff = (7 + (dt.DayOfWeek - startOfWeek)) % 7;
return dt.AddDays(-1 * diff).Date;
}
public static DateTime EndOfWeek(this DateTime dt, DayOfWeek startOfWeek)
{
int diff = (7 - (dt.DayOfWeek - startOfWeek)) % 7;
return dt.AddDays(1 * diff).Date;
}
}
পদক্ষেপ 2: সপ্তাহের শুরু এবং শেষের দিন উভয়ই পেতে এই শ্রেণীটি ব্যবহার করুন
DateTime dt =TIMEE.StartOfWeek(DateTime.Now ,DayOfWeek.Monday);
DateTime dt1 = TIMEE.EndOfWeek(DateTime.Now, DayOfWeek.Sunday);
(6 - (dt.DayOfWeek - startOfWeek)) % 7
আমার লেখা ইউনিট পরীক্ষার বিপরীতে আমার জন্য সপ্তাহের শেষের প্রয়োজন ।
নিম্নলিখিত পদ্ধতিটি আপনার পছন্দসই তারিখটি প্রদান করবে। রবিবার সপ্তাহের প্রথম দিন হিসাবে সোমবারের জন্য মিথ্যা হিসাবে সত্য পাস করুন:
private DateTime getStartOfWeek(bool useSunday)
{
DateTime now = DateTime.Now;
int dayOfWeek = (int)now.DayOfWeek;
if(!useSunday)
dayOfWeek--;
if(dayOfWeek < 0)
{// day of week is Sunday and we want to use Monday as the start of the week
// Sunday is now the seventh day of the week
dayOfWeek = 6;
}
return now.AddDays(-1 * (double)dayOfWeek);
}
উদাহরণের জন্য ধন্যবাদ। আমাকে সপ্তাহের প্রথম দিন সর্বদা "কারেন্টকালচার" ব্যবহার করা দরকার ছিল এবং একটি অ্যারের জন্য আমার সঠিক ডাইনবারকে জানা দরকার ছিল .. সুতরাং এখানে আমার প্রথম বর্ধিতকরণ রয়েছে:
public static class DateTimeExtensions
{
//http://stackoverflow.com/questions/38039/how-can-i-get-the-datetime-for-the-start-of-the-week
//http://stackoverflow.com/questions/1788508/calculate-date-with-monday-as-dayofweek1
public static DateTime StartOfWeek(this DateTime dt)
{
//difference in days
int diff = (int)dt.DayOfWeek - (int)CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek; //sunday=always0, monday=always1, etc.
//As a result we need to have day 0,1,2,3,4,5,6
if (diff < 0)
{
diff += 7;
}
return dt.AddDays(-1 * diff).Date;
}
public static int DayNoOfWeek(this DateTime dt)
{
//difference in days
int diff = (int)dt.DayOfWeek - (int)CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek; //sunday=always0, monday=always1, etc.
//As a result we need to have day 0,1,2,3,4,5,6
if (diff < 0)
{
diff += 7;
}
return diff + 1; //Make it 1..7
}
}
কেউ এখনও এর সঠিক উত্তর দিয়েছে বলে মনে হয় না। কারও প্রয়োজনে আমার সমাধান এখানে পেস্ট করব। নিম্নলিখিত কোডটি সপ্তাহের প্রথম দিন সোমবার বা রবিবার বা অন্য কিছু হলে নির্বিশেষে কাজ করে।
public static class DateTimeExtension
{
public static DateTime GetFirstDayOfThisWeek(this DateTime d)
{
CultureInfo ci = System.Threading.Thread.CurrentThread.CurrentCulture;
var first = (int)ci.DateTimeFormat.FirstDayOfWeek;
var current = (int)d.DayOfWeek;
var result = first <= current ?
d.AddDays(-1 * (current - first)) :
d.AddDays(first - current - 7);
return result;
}
}
class Program
{
static void Main()
{
System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
Console.WriteLine("Current culture set to en-US");
RunTests();
Console.WriteLine();
System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("da-DK");
Console.WriteLine("Current culture set to da-DK");
RunTests();
Console.ReadLine();
}
static void RunTests()
{
Console.WriteLine("Today {1}: {0}", DateTime.Today.Date.GetFirstDayOfThisWeek(), DateTime.Today.Date.ToString("yyyy-MM-dd"));
Console.WriteLine("Saturday 2013-03-02: {0}", new DateTime(2013, 3, 2).GetFirstDayOfThisWeek());
Console.WriteLine("Sunday 2013-03-03: {0}", new DateTime(2013, 3, 3).GetFirstDayOfThisWeek());
Console.WriteLine("Monday 2013-03-04: {0}", new DateTime(2013, 3, 4).GetFirstDayOfThisWeek());
}
}
সি # তে থাকা মডুলো -1 মড 7 এর জন্য খারাপ কাজ করে (6, সি # রিটার্ন হওয়া উচিত -১) সুতরাং ... এর জন্য "অনলাইনার" সমাধানটি এর মতো দেখতে পাবেন :)
private static DateTime GetFirstDayOfWeek(DateTime date)
{
return date.AddDays(-(((int)date.DayOfWeek - 1) - (int)Math.Floor((double)((int)date.DayOfWeek - 1) / 7) * 7));
}
আপনি চমৎকার ছাতা লাইব্রেরি ব্যবহার করতে পারেন :
using nVentive.Umbrella.Extensions.Calendar;
DateTime beginning = DateTime.Now.BeginningOfWeek();
যাইহোক, তারা না সোমবার সপ্তাহ (সম্পত্তি দেখতে প্রথম দিন হিসাবে সংরক্ষিত হয়েছে বলে মনে হচ্ছে nVentive.Umbrella.Extensions.Calendar.DefaultDateTimeCalendarExtensions.WeekBeginsOn
), যাতে পূর্ববর্তী স্থানীয় সমাধান একটু ভাল। দু: খজনক।
সম্পাদনা করুন : প্রশ্নের কাছাকাছি তাকিয়ে দেখে মনে হচ্ছে ছাতা আসলে এর জন্যও কাজ করতে পারে:
// Or DateTime.Now.PreviousDay(DayOfWeek.Monday)
DateTime monday = DateTime.Now.PreviousMonday();
DateTime sunday = DateTime.Now.PreviousSunday();
যদিও এটি লক্ষণীয় যে আপনি যদি গত সোমবার সোমবারের জন্য জিজ্ঞাসা করেন তবে এটি আপনাকে সাত দিন আগে দেবে। তবে এটি আপনি যদি ব্যবহার করেন তবে এটি সত্য BeginningOfWeek
, যা বাগের মতো মনে হয় :(।
এটি সপ্তাহের শুরু এবং সপ্তাহের শেষের তারিখ উভয়ই ফিরে আসবে:
private string[] GetWeekRange(DateTime dateToCheck)
{
string[] result = new string[2];
TimeSpan duration = new TimeSpan(0, 0, 0, 0); //One day
DateTime dateRangeBegin = dateToCheck;
DateTime dateRangeEnd = DateTime.Today.Add(duration);
dateRangeBegin = dateToCheck.AddDays(-(int)dateToCheck.DayOfWeek);
dateRangeEnd = dateToCheck.AddDays(6 - (int)dateToCheck.DayOfWeek);
result[0] = dateRangeBegin.Date.ToString();
result[1] = dateRangeEnd.Date.ToString();
return result;
}
আমি আমার ব্লগ জামিরসব্লগে সপ্তাহ, মাস, ত্রৈমাসিক এবং বছরের শুরু / শেষ গণনা করার জন্য সম্পূর্ণ কোড পোস্ট করেছি
namespace DateTimeExample
{
using System;
public static class DateTimeExtension
{
public static DateTime GetMonday(this DateTime time)
{
if (time.DayOfWeek != DayOfWeek.Monday)
return GetMonday(time.AddDays(-1)); //Recursive call
return time;
}
}
internal class Program
{
private static void Main()
{
Console.WriteLine(DateTime.Now.GetMonday());
Console.ReadLine();
}
}
}
এখানে কয়েকটি উত্তরের সংমিশ্রণ দেওয়া হল। এটি একটি এক্সটেনশন পদ্ধতি ব্যবহার করে যা সংস্কৃতিটি পাস করার অনুমতি দেয়, যদি কোনওটি পাস না করা হয় তবে বর্তমান সংস্কৃতি ব্যবহৃত হয়। এটি এটিকে সর্বাধিক নমনীয়তা এবং পুনরায় ব্যবহার দেবে।
/// <summary>
/// Gets the date of the first day of the week for the date.
/// </summary>
/// <param name="date">The date to be used</param>
/// <param name="cultureInfo">If none is provided, the current culture is used</param>
/// <returns>The date of the beggining of the week based on the culture specifed</returns>
public static DateTime StartOfWeek(this DateTime date, CultureInfo cultureInfo=null) =>
date.AddDays(-1 * (7 + (date.DayOfWeek - (cultureInfo??CultureInfo.CurrentCulture).DateTimeFormat.FirstDayOfWeek)) % 7).Date;
ব্যবহারের উদাহরণ:
public static void TestFirstDayOfWeekExtension() {
DateTime date = DateTime.Now;
foreach(System.Globalization.CultureInfo culture in CultureInfo.GetCultures(CultureTypes.UserCustomCulture | CultureTypes.SpecificCultures)) {
Console.WriteLine($"{culture.EnglishName}: {date.ToShortDateString()} First Day of week: {date.StartOfWeek(culture).ToShortDateString()}");
}
}
আপনি যদি শনিবার বা রবিবার বা সপ্তাহের কোনও দিন চান তবে বর্তমান সপ্তাহের বেশি না (শনি-সান) আমি আপনাকে এই কোডের টুকরো দিয়ে আচ্ছাদিত করেছি।
public static DateTime GetDateInCurrentWeek(this DateTime date, DayOfWeek day)
{
var temp = date;
var limit = (int)date.DayOfWeek;
var returnDate = DateTime.MinValue;
if (date.DayOfWeek == day) return date;
for (int i = limit; i < 6; i++)
{
temp = temp.AddDays(1);
if (day == temp.DayOfWeek)
{
returnDate = temp;
break;
}
}
if (returnDate == DateTime.MinValue)
{
for (int i = limit; i > -1; i++)
{
date = date.AddDays(-1);
if (day == date.DayOfWeek)
{
returnDate = date;
break;
}
}
}
return returnDate;
}
এই উত্তরটি সংকলন করা থেকে অনুসরণ করে, সপ্তাহের যে কোনও দিনের তারিখ পাওয়ার জন্য নিম্নলিখিত পদ্ধতিটি ব্যবহার করুন:
public static DateTime GetDayOfWeek(this DateTime dt, DayOfWeek day)
{
int diff = (7 + (dt.DayOfWeek - DayOfWeek.Monday)) % 7;
var monday = dt.AddDays(-1 * diff).Date;
switch (day)
{
case DayOfWeek.Tuesday:
return monday.AddDays(1).Date;
case DayOfWeek.Wednesday:
return monday.AddDays(2).Date;
case DayOfWeek.Thursday:
return monday.AddDays(3).Date;
case DayOfWeek.Friday:
return monday.AddDays(4).Date;
case DayOfWeek.Saturday:
return monday.AddDays(5).Date;
case DayOfWeek.Sunday:
return monday.AddDays(6).Date;
}
return monday;
}
পুনরাবৃত্তি ব্যবহার করে এমন একটি ফাংশন তৈরি করার চেষ্টা করুন। আপনার ডেটটাইম অবজেক্টটি একটি ইনপুট এবং ফাংশনটি একটি নতুন ডেটটাইম অবজেক্ট দেয় যা সপ্তাহের শুরুতে দাঁড়ায়।
DateTime WeekBeginning(DateTime input)
{
do
{
if (input.DayOfWeek.ToString() == "Monday")
return input;
else
return WeekBeginning(input.AddDays(-1));
} while (input.DayOfWeek.ToString() == "Monday");
}
এইভাবে গণনা করা আপনাকে সপ্তাহের কোন দিনটি একটি নতুন সপ্তাহের সূচনা নির্দেশ করে (উদাহরণস্বরূপ আমি সোমবার বেছে নিয়েছি) বেছে নিতে দেয়।
দ্রষ্টব্য যে সোমবারের জন্য এই গণনাটি করা বর্তমান সোমবারকে দেবে , আগেরটি নয়।
//Replace with whatever input date you want
DateTime inputDate = DateTime.Now;
//For this example, weeks start on Monday
int startOfWeek = (int)DayOfWeek.Monday;
//Calculate the number of days it has been since the start of the week
int daysSinceStartOfWeek = ((int)inputDate.DayOfWeek + 7 - startOfWeek) % 7;
DateTime previousStartOfWeek = inputDate.AddDays(-daysSinceStartOfWeek);
int diff = dayOfWeek - dt.DayOfWeek; return dt.AddDays(diff).Date;