উত্তর:
আপনি একটি ডেটটাইম মান পরিবর্তন করতে পারবেন না - এটি পরিবর্তনযোগ্য। তবে আপনি ভেরিয়েবলটিকে নতুন মান হিসাবে পরিবর্তন করতে পারেন। ঠিক সময় পরিবর্তনের জন্য এটি করার সহজতম উপায় হ'ল প্রাসঙ্গিক সময়ের সাথে একটি টাইমস্প্যান তৈরি করা এবং ডেটটাইম. তারিখের সম্পত্তিটি ব্যবহার করা:
DateTime s = ...;
TimeSpan ts = new TimeSpan(10, 30, 0);
s = s.Date + ts;
s
এখন একই তারিখটি হবে, তবে সকাল দশটায়।
নোট করুন যে DateTime
উভয় দিকের "নিষ্পাপ" গ্রেগরিয়ান সময়কে উপস্থাপন করে দিবালোক সংরক্ষণের সময় ট্রানজিশনগুলিকে উপেক্ষা করে ( DateTime
দস্তাবেজের মন্তব্যগুলি বিভাগ দেখুন )। শুধুমাত্র ব্যতিক্রম আছে .Now
এবং .Today
তারা বর্তমান সিস্টেমের সময় এই ঘটনাসমূহ প্রতিফলিত হিসাবে তারা ঘটতে উদ্ধার।
এই ধরণের জিনিসটি আমাকে নোদা টাইম প্রকল্প শুরু করতে উদ্বুদ্ধ করেছিল , যা এখন উত্পাদন প্রস্তুত production এটির একটি ডাটাবেস এন্ট্রি এর সাথে সংযুক্ত করেZonedDateTime
"সচেতন" করা হয়tz
।
Add
শূন্য টাইমস্প্যান সরবরাহ করবেন কেন ? আপনার অভিব্যক্তিটি সমান s.Date
তবে লম্বা ...
DateTime
টি থাকে, (একটি তারিখের জন্য এবং একটি সময়ের জন্য) আপনি এটি করতে পারেন:var result = date.Date + time.TimeOfDay;
time
এটি একটি হওয়া উচিত নয় DateTime
। (আমি অবশ্যই নোডা সময়টি ব্যবহার করতাম, তবে ...)
ঠিক আছে আমি আমার পরামর্শ, একটি এক্সটেনশন পদ্ধতি দিয়ে ডাইভিং করছি:
public static DateTime ChangeTime(this DateTime dateTime, int hours, int minutes, int seconds, int milliseconds)
{
return new DateTime(
dateTime.Year,
dateTime.Month,
dateTime.Day,
hours,
minutes,
seconds,
milliseconds,
dateTime.Kind);
}
তারপরে কল করুন:
DateTime myDate = DateTime.Now.ChangeTime(10,10,10,0);
এটি উল্লেখ করা গুরুত্বপূর্ণ যে এই এক্সটেনশানটি একটি নতুন তারিখের অবজেক্ট দেয়, তাই আপনি এটি করতে পারবেন না:
DateTime myDate = DateTime.Now;
myDate.ChangeTime(10,10,10,0);
তবে আপনি এটি করতে পারেন:
DateTime myDate = DateTime.Now;
myDate = myDate.ChangeTime(10,10,10,0);
Datetime.Today.Add(time.TimeOfDay)
। এটি কারণ অভ্যন্তরীণভাবে, নির্মাণকারীর তারিখের অংশের জন্য একটি লিপ বছরের জন্য অ্যাকাউন্টিং ব্যতীত কোনও ক্যালেন্ডার-ভিত্তিক সংশোধন করে না। অর্থ্যাৎ DateTime
পাইথনের datetime
মডিউলটির ক্ষেত্রে একটি "নিষ্পাপ" বাস্তবায়ন ।
s = s.Date.AddHours(x).AddMinutes(y).AddSeconds(z);
এভাবে আপনার পছন্দ অনুযায়ী নতুন ঘন্টা, মিনিট এবং সেকেন্ডের অংশটি সন্নিবেশ করার সময় আপনি নিজের তারিখটি সংরক্ষণ করেন।
.AddMilliseconds()
প্রয়োজনে করতেও পারেন।
এক রৈখিক
var date = DateTime.Now.Date.Add(new TimeSpan(4, 30, 0));
আজকের তারিখটি 4:30:00 সময়ের সাথে ফিরিয়ে আনবে, ডেটটাইম প্রতিস্থাপন করুন। এখন যে কোনও তারিখের অবজেক্টের সাথে প্রতিস্থাপন করুন
ডেটটাইম একটি অপরিবর্তনীয় প্রকার, তাই আপনি এটি পরিবর্তন করতে পারবেন না ।
তবে আপনি পূর্ববর্তী উদাহরণের ভিত্তিতে একটি নতুন ডেটটাইম উদাহরণ তৈরি করতে পারেন। আপনার ক্ষেত্রে এটির মতো শোনা যাচ্ছে যে আপনার কাছে তারিখের সম্পত্তি প্রয়োজন এবং আপনি একটি টাইমস্প্যান যোগ করতে পারেন যা দিনের সময়ের প্রতিনিধিত্ব করে।
এটার মতো কিছু:
var newDt = s.Date + TimeSpan.FromHours(2);
আপনার যদি ইতিমধ্যে অন্য কোনও DateTime
অবজেক্টে সঞ্চিত সময় থাকে তবে আপনি Add
পদ্ধতিটি ব্যবহার করতে পারেন ।
DateTime dateToUse = DateTime.Now();
DateTime timeToUse = new DateTime(2012, 2, 4, 10, 15, 30); //10:15:30 AM
DateTime dateWithRightTime = dateToUse.Date.Add(timeToUse.TimeOfDay);
TimeOfDay
সম্পত্তি একটি হল TimeSpan
বস্তু এবং প্রেরণ করা সম্ভব Add
পদ্ধতি। এবং যেহেতু আমরা ভেরিয়েবলের Date
সম্পত্তি ব্যবহার dateToUse
করি আমরা কেবল তারিখ পাই এবং সময়সীমা যুক্ত করি।
সহজ সমাধান:
DateTime s = //some Datetime that you want to change time for 8:36:44 ;
s = new DateTime(s.Year, s.Month, s.Day, 8, 36, 44);
এবং আপনার যদি একটি নির্দিষ্ট তারিখ এবং সময় ফর্ম্যাট প্রয়োজন:
s = new DateTime(s.Year, s.Month, s.Day, 8, 36, 44).ToString("yyyy-MM-dd h:mm:ss");
এই পোস্টটি ঘটল কারণ আমি একই কার্যকারিতাটি খুঁজছিলাম কারণ এটি সম্ভবত লোকটি যা চেয়েছিল তা করতে পারে। আসল তারিখটি নিন এবং সময়ের অংশটি প্রতিস্থাপন করুন
DateTime dayOpen = DateTime.Parse(processDay.ToShortDateString() + " 05:00 AM");
যেহেতু DateTime
অপরিবর্তনীয়, একটি তারিখের উপাদান পরিবর্তন করার প্রয়োজন হলে একটি নতুন উদাহরণ তৈরি করতে হবে। দুর্ভাগ্যক্রমে, কোনও DateTime
উদাহরণের পৃথক উপাদান সেট করার জন্য কোনও অন্তর্নির্মিত কার্যকারিতা নেই ।
নিম্নলিখিত এক্সটেনশন পদ্ধতি ব্যবহার করে
public static DateTime SetPart(this DateTime dateTime, int? year, int? month, int? day, int? hour, int? minute, int? second)
{
return new DateTime(
year ?? dateTime.Year,
month ?? dateTime.Month,
day ?? dateTime.Day,
hour ?? dateTime.Hour,
minute ?? dateTime.Minute,
second ?? dateTime.Second
);
}
public static DateTime SetYear(this DateTime dateTime, int year)
{
return dateTime.SetPart(year, null, null, null, null, null);
}
public static DateTime SetMonth(this DateTime dateTime, int month)
{
return dateTime.SetPart(null, month, null, null, null, null);
}
public static DateTime SetDay(this DateTime dateTime, int day)
{
return dateTime.SetPart(null, null, day, null, null, null);
}
public static DateTime SetHour(this DateTime dateTime, int hour)
{
return dateTime.SetPart(null, null, null, hour, null, null);
}
public static DateTime SetMinute(this DateTime dateTime, int minute)
{
return dateTime.SetPart(null, null, null, null, minute, null);
}
public static DateTime SetSecond(this DateTime dateTime, int second)
{
return dateTime.SetPart(null, null, null, null, null, second);
}
আপনি DateTime
যেমন পৃথক উপাদান সেট করতে পারেন
var now = DateTime.Now;
now.SetSecond(0);
আপনার যদি 2014/02/05 18:19:51 এর মতো ডেটটাইম থাকে এবং কেবল 2014/02/05 চান, আপনি এটি করতে পারেন:
_yourDateTime = new DateTime(_yourDateTime.Year, _yourDateTime.Month, _yourDateTime.Day)
আপনার তারিখে তারিখ যুক্ত করা এটি মধ্যরাতে (00:00) সেট করে।
MyDate.Date
দ্রষ্টব্য সমতুল্য এসকিউএল হ'লCONVERT(DATETIME, CONVERT(DATE, @MyDate))
এই পদ্ধতিটি কী এত ভাল করে তোলে তা হ'ল এটি টাইপ করা দ্রুত এবং সহজেই পড়া সহজ। একটি বোনাস হ'ল স্ট্রিং থেকে কোনও রূপান্তর নেই।
অর্থাৎ আজকের তারিখ 23:30 এ সেট করতে, ব্যবহার করুন:
DateTime.Now.Date.AddHours(23).AddMinutes(30)
আপনি অবশ্যই ডেটটাইম.নউ বা মাইডেটকে আপনার পছন্দের যে কোনও তারিখের সাথে প্রতিস্থাপন করতে পারেন।
আসলে, একবার তৈরি হয়ে গেলে আপনি এটি পরিবর্তন করতে পারবেন না। তবে আপনি এটিকে অনেকগুলি নির্মাণকারীর সাহায্যে সহজেই তৈরি করতে পারেন: https://docs.microsoft.com/en-us/dotnet/api/system.datetime.-ctor?view=netframework-4.7.7
উদাহরণস্বরূপ, আপনি যদি একটি ডেটটাইম পরিবর্তনকারী সেকেন্ড তৈরি করতে চান তবে আপনি কেবল এটি করতে পারেন:
DateTime now = DateTime.Now;
DateTime secondschanged = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, yourseconds);
int year = 2012;
int month = 12;
int day = 24;
int hour = 0;
int min = 0;
int second = 23;
DateTime dt = new DateTime(year, month, day, hour, min, second);
ব্যবহারের Date.Add
এবং যোগ New TimeSpan
নতুন সময় আপনি যোগ করতে চান
DateTime dt = DateTime.Now
dt.Date.Add(new TimeSpan(12,15,00))
আপনি যখন নিজের DateTime
অবজেক্টটি বানান, এমন কনস্ট্রাক্টর ব্যবহার করুন যা আপনাকে সময় নির্দিষ্ট করার অনুমতি দেয়:
var myDateTime = new DateTime(2000, 01, 01, 13, 37, 42); // 2000-01-01 13:37:42
আপনার যদি ইতিমধ্যে কোনও DateTime
অবজেক্ট থাকে এবং সময় পরিবর্তন করতে চান তবে আপনি DateTime
সাধারণ পদ্ধতিগুলি ব্যবহার করে কয়েক মিনিট, ঘন্টা বা সেকেন্ড যোগ করতে পারেন :
var myDateTime = new DateTime(2000, 01, 01); // 2000-01-01 00:00:00
myDateTime = myDateTime.AddHours(13); // 2000-01-01 13:00:00
myDateTime = myDateTime.AddMinutes(37); // 2000-01-01 13:37:00
myDateTime = myDateTime.AddSecounds(42); // 2000-01-01 13:37:42
খেয়াল করুন কীভাবে আমাদের myDateTime
ভেরিয়েবলের প্রতিটি পদ্ধতি কল থেকে ফলাফল "সংরক্ষণ" করতে হয় । এটি কারণ পরিবর্তনযোগ্য DateTime
এবং এর পদ্ধতিগুলি অতিরিক্ত ঘন্টা / মিনিট / সেকেন্ড যুক্ত হয়ে কেবল নতুন উদাহরণ তৈরি করে।
আপনি উভয় ঘন্টা এবং মিনিট (এবং / অথবা সেকেন্ড) এবং একই সময় যোগ করতে হবে, তাহলে আপনি একটি যোগ করে কোড প্রক্রিয়া সহজ করতে TimeSpan
আসল DateTime
পরিবর্তে:
var myDateTime = new DateTime(2000, 01, 01); // 2000-01-01 00:00:00
myDateTime += new TimeSpan(13, 37, 42); // 2000-01-01 13:37:42
আপনি যদি বিদ্যমান মানগুলিকে যুক্ত করার পরিবর্তে নিখুঁত ঘন্টা / মিনিট / সেকেন্ড সেট করতে চান, আপনি পূর্বোক্ত DateTime
নির্মাণকর্তা ব্যবহার করতে পারেন এবং বছর / মাস / দিনের জন্য পূর্বের থেকে মানগুলি পুনরায় ব্যবহার করতে পারেন :
myDateTime = new DateTime(myDateTime.Year, myDateTime.Month, myDateTime.Day,
20, 33, 19) // 2000-01-01 20:33:19
আপনার পক্ষে এটি করার জন্য আপনি এখানে একটি পদ্ধতি ব্যবহার করতে পারেন, এটি এটি ব্যবহার করুন
DateTime newDataTime = ChangeDateTimePart(oldDateTime, DateTimePart.Seconds, 0);
এখানে পদ্ধতিটি রয়েছে, সম্ভবত এর থেকে আরও ভাল উপায় আছে তবে আমি এইটিকে চাবুক দিয়েছি:
public enum DateTimePart { Years, Months, Days, Hours, Minutes, Seconds };
public DateTime ChangeDateTimePart(DateTime dt, DateTimePart part, int newValue)
{
return new DateTime(
part == DateTimePart.Years ? newValue : dt.Year,
part == DateTimePart.Months ? newValue : dt.Month,
part == DateTimePart.Days ? newValue : dt.Day,
part == DateTimePart.Hours ? newValue : dt.Hour,
part == DateTimePart.Minutes ? newValue : dt.Minute,
part == DateTimePart.Seconds ? newValue : dt.Second
);
}
আমি কেবল এই পোস্টটি জুড়ে এসেছি কারণ আমার একই ধরণের সমস্যা হয়েছিল যার ফলে আমি এমভিসিতে একটি সত্ত্বা ফ্রেমওয়ার্ক অবজেক্টের জন্য সময় নির্ধারণ করতে চেয়েছিলাম যা একটি ভিউ (তারিখপিকার) থেকে তারিখ পায় তাই সময় উপাদানটি 00:00:00 তবে আমার দরকার এটি বর্তমান সময় হতে হবে। এই পোস্টে উত্তরগুলির ভিত্তিতে আমি এলাম:
myEntity.FromDate += DateTime.Now.TimeOfDay;
//The fastest way to copy time
DateTime justDate = new DateTime(2011, 1, 1); // 1/1/2011 12:00:00AM the date you will be adding time to, time ticks = 0
DateTime timeSource = new DateTime(1999, 2, 4, 10, 15, 30); // 2/4/1999 10:15:30AM - time tick = x
justDate = new DateTime(justDate.Date.Ticks + timeSource.TimeOfDay.Ticks);
Console.WriteLine(justDate); // 1/1/2011 10:15:30AM
Console.Read();
আপনি DateTime
বিভিন্ন মূল উপায়ে একটি নতুন মানকে প্রাথমিক মূল্য নির্ধারণ করতে পারেন :
সম্প্রসারণ পদ্ধতি DateTime
public static DateTime ChangeTime(this DateTime dateTime, int hours, int minutes, int seconds = default, int milliseconds = default)
{
return new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, hours, minutes, seconds, milliseconds, dateTime.Kind);
}
তারপরে ChangeTime
:
DateTime datetime = DateTime.Now; //Your DateTime
datetime = datetime.ChangeTime(12, 20, 10);
অ্যাড পদ্ধতি ব্যবহার করে
DateTime datetime = DateTime.Now; //Your DateTime
datetime = datetime.Date.AddHours(12).AddMinutes(20).AddSeconds(10);
টাইমস্প্যান ব্যবহার করে
DateTime datetime = DateTime.Now; //Your DateTime
datetime = datetime.Date.Add(new TimeSpan(12, 20, 10));
প্রাথমিক মান ব্যবহার করে
DateTime datetime = DateTime.Now;
datetime = new DateTime(datetime.Year, datetime.Month, datetime.Day, 12, 20, 10);
ডেটটাইম.এডসেকেন্ডস পদ্ধতিতে আপনি কী সেকেন্ডে যোগ বা বিয়োগ করতে পারবেন?
DateTime s;
//s = datevalue
s = s.AddMilliseconds(10);
s = s.AddMinutes(10);
s = s.AddSeconds(10);
s = s.AddHours(10);
আপনি প্যারামিটারে + ve / -ve মান যোগ করতে পারেন।
s.Add(new TimeSpan(1, 1, 1));
আমি এটি পছন্দ করি:
DateTime s = //get some datetime;
s = new DateTime(s.Year, s.Month,s.Day,s.Hour,s.Minute,0);
Using an extencion to DateTime:
public enum eTimeFragment
{
hours,
minutes,
seconds,
milliseconds
}
public static DateTime ClearTimeFrom(this DateTime dateToClear, eTimeFragment etf)
{
DateTime dtRet = dateToClear;
switch (etf)
{
case eTimeFragment.hours:
dtRet = dateToClear.Date;
break;
case eTimeFragment.minutes:
dtRet = dateToClear.AddMinutes(dateToClear.Minute * -1);
dtRet = dtRet.ClearTimeFrom(eTimeFragment.seconds);
break;
case eTimeFragment.seconds:
dtRet = dateToClear.AddSeconds(dateToClear.Second * -1);
dtRet = dtRet.ClearTimeFrom(eTimeFragment.milliseconds);
break;
case eTimeFragment.milliseconds:
dtRet = dateToClear.AddMilliseconds(dateToClear.Millisecond * -1);
break;
}
return dtRet;
}
এটি ব্যবহার করুন:
কনসোল.ওরাইটলাইন (ডেটটাইম.নো।
এটি ফিরতে হবে: 2016-06-06 00: 00: 00.000
সর্বোত্তম সমাধানটি হ'ল:
currdate.AddMilliseconds(currdate.Millisecond * -1).AddSeconds(currdate.Second * -1).AddMinutes(currdate.Minute * -1).AddHours(currdate.Hour * -1);
এখানে একটি ঘেটো উপায়, কিন্তু এটি কাজ করে :)
DateTime dt = DateTime.Now; //get a DateTime variable for the example
string newSecondsValue = "00";
dt = Convert.ToDateTime(dt.ToString("MM/dd/yyyy hh:mm:" + newSecondsValue));
dt.AddSeconds(0-dt.Seconds).AddSeconds(newSecondsValue)
তবে এটি সুপারিশ করবে না।