আপনি কিভাবে যেমন একটি স্ট্রিং এ কনভার্ট করব 2009-05-08 14:40:52,531
একটি মধ্যে DateTime
?
আপনি কিভাবে যেমন একটি স্ট্রিং এ কনভার্ট করব 2009-05-08 14:40:52,531
একটি মধ্যে DateTime
?
উত্তর:
যেহেতু আপনি 24 ঘন্টা ভিত্তিক সময় পরিচালনা করছেন এবং আপনার কাছে কমাটি সেকেন্ডের বিভাজন পৃথক করছে, তাই আমি আপনাকে একটি কাস্টম ফর্ম্যাট নির্দিষ্ট করার পরামর্শ দিচ্ছি:
DateTime myDate = DateTime.ParseExact("2009-05-08 14:40:52,531", "yyyy-MM-dd HH:mm:ss,fff",
System.Globalization.CultureInfo.InvariantCulture);
আপনার কাছে এটির জন্য মূলত দুটি বিকল্প রয়েছে। DateTime.Parse()
এবং DateTime.ParseExact()
।
প্রথমটি সিনট্যাক্সের ক্ষেত্রে অত্যন্ত ক্ষমাশীল এবং বিভিন্ন ফরম্যাটে তারিখগুলি পার্স করবে। এটি ব্যবহারকারীর ইনপুটটির জন্য ভাল যা বিভিন্ন ফর্ম্যাটে আসতে পারে।
পার্সেক্স্যাক্ট আপনাকে পার্সিংয়ের জন্য আপনার তারিখের স্ট্রিংয়ের সঠিক বিন্যাসটি নির্দিষ্ট করতে দেয়। আপনার স্ট্রিং সর্বদা একই বিন্যাসে থাকলে এটি ব্যবহার করা ভাল। এইভাবে, আপনি সহজেই প্রত্যাশিত ডেটা থেকে কোনও বিচ্যুতি সনাক্ত করতে পারেন।
আপনি এর মতো ব্যবহারকারীর ইনপুট পার্স করতে পারেন:
DateTime enteredDate = DateTime.Parse(enteredString);
স্ট্রিংয়ের জন্য যদি আপনার নির্দিষ্ট বিন্যাস থাকে তবে আপনার অন্য পদ্ধতিটি ব্যবহার করা উচিত:
DateTime loadedDate = DateTime.ParseExact(loadedString, "d", null);
"d"
সংক্ষিপ্ত তারিখের প্যাটার্নটির জন্য দাঁড়িয়েছে ( আরও তথ্যের জন্য এমএসডিএন দেখুন ) এবং null
সুনির্দিষ্টভাবে উল্লেখ করে যে বর্তমান সংস্কৃতিটি স্ট্রিং পার্স করার জন্য ব্যবহার করা উচিত।
ব্যবহার DateTime.Parse(string)
:
DateTime dateTime = DateTime.Parse(dateTimeStr);
কেউ বর্ধিতকরণের পদ্ধতি প্রয়োগ করেছে বলে মনে হয় না। সাহায্যে @, CMS এর উত্তর :
কাজ করা এবং উন্নত পূর্ণ উত্স উদাহরণ এখানে: গিস্ট লিঙ্ক
namespace ExtensionMethods {
using System;
using System.Globalization;
public static class DateTimeExtensions {
public static DateTime ToDateTime(this string s,
string format = "ddMMyyyy", string cultureString = "tr-TR") {
try {
var r = DateTime.ParseExact(
s: s,
format: format,
provider: CultureInfo.GetCultureInfo(cultureString));
return r;
} catch (FormatException) {
throw;
} catch (CultureNotFoundException) {
throw; // Given Culture is not supported culture
}
}
public static DateTime ToDateTime(this string s,
string format, CultureInfo culture) {
try {
var r = DateTime.ParseExact(s: s, format: format,
provider: culture);
return r;
} catch (FormatException) {
throw;
} catch (CultureNotFoundException) {
throw; // Given Culture is not supported culture
}
}
}
}
namespace SO {
using ExtensionMethods;
using System;
using System.Globalization;
class Program {
static void Main(string[] args) {
var mydate = "29021996";
var date = mydate.ToDateTime(format: "ddMMyyyy"); // {29.02.1996 00:00:00}
mydate = "2016 3";
date = mydate.ToDateTime("yyyy M"); // {01.03.2016 00:00:00}
mydate = "2016 12";
date = mydate.ToDateTime("yyyy d"); // {12.01.2016 00:00:00}
mydate = "2016/31/05 13:33";
date = mydate.ToDateTime("yyyy/d/M HH:mm"); // {31.05.2016 13:33:00}
mydate = "2016/31 Ocak";
date = mydate.ToDateTime("yyyy/d MMMM"); // {31.01.2016 00:00:00}
mydate = "2016/31 January";
date = mydate.ToDateTime("yyyy/d MMMM", cultureString: "en-US");
// {31.01.2016 00:00:00}
mydate = "11/شعبان/1437";
date = mydate.ToDateTime(
culture: CultureInfo.GetCultureInfo("ar-SA"),
format: "dd/MMMM/yyyy");
// Weird :) I supposed dd/yyyy/MMMM but that did not work !?$^&*
System.Diagnostics.Debug.Assert(
date.Equals(new DateTime(year: 2016, month: 5, day: 18)));
}
}
}
Nobody seems to implemented an extension method
সম্ভবত কারণ প্রয়োজন নেই ...
আমি বিভিন্নভাবে চেষ্টা করেছি। আমার জন্য যা কাজ করেছিল তা হ'ল:
Convert.ToDateTime(data, CultureInfo.InvariantCulture);
data
আমার জন্য এই সময় ছিল 9/24/2017 9:31:34 এএম
নীচে চেষ্টা করুন, যেখানে স্ট্রিমেটটি 'এমএম / ডিডি / ইয়ে' ফর্ম্যাটে আপনার তারিখ
var date = DateTime.Parse(strDate,new CultureInfo("en-US", true))
string input;
DateTime db;
Console.WriteLine("Enter Date in this Format(YYYY-MM-DD): ");
input = Console.ReadLine();
db = Convert.ToDateTime(input);
//////// this methods convert string value to datetime
///////// in order to print date
Console.WriteLine("{0}-{1}-{2}",db.Year,db.Month,db.Day);
DateTime.Parse
বাক্য গঠন:
DateTime.Parse(String value)
DateTime.Parse(String value, IFormatProvider provider)
DateTime.Parse(String value, IFormatProvider provider, DateTypeStyles styles)
উদাহরণ:
string value = "1 January 2019";
CultureInfo provider = new CultureInfo("en-GB");
DateTime.Parse(value, provider, DateTimeStyles.NoCurrentDateDefault););
এটা মনে রাখার মতোও যে ডেটটাইম এমন একটি অবজেক্ট যা ফ্রেমওয়ার্কে অভ্যন্তরীণভাবে নম্বর হিসাবে সঞ্চিত থাকে, ফর্ম্যাট কেবল তখনই প্রয়োগ হয় যখন আপনি এটিকে স্ট্রিংয়ে ফিরে রূপান্তর করেন convert
একটি স্ট্রিংকে অভ্যন্তরীণ সংখ্যা প্রকারে রূপান্তর করে।
অভ্যন্তরীণ সংখ্যাসূচক মানটিকে পাঠযোগ্য স্ট্রিংয়ে রূপান্তরকরণ ফর্ম্যাট করা।
আমার সম্প্রতি একটি সমস্যা হয়েছিল যেখানে আমি লিনকে পাস করার জন্য ডেটটাইমকে রূপান্তর করার চেষ্টা করছিলাম যা আমি তখন বুঝতে পারি নি যে ফর্ম্যাটটি ছিল লিনাকের ক্যোয়ারিতে ডেটটাইম পাস করার সময় অপ্রাসঙ্গিক।
DateTime SearchDate = DateTime.Parse(searchDate);
applicationsUsages = applicationsUsages.Where(x => DbFunctions.TruncateTime(x.dateApplicationSelected) == SearchDate.Date);
আপনি যদি ইনপুট মান সম্পর্কে অনিশ্চিত থাকেন তবে আপনি নীচে ডেটটাইম.ট্রি পার্সি এক্স্যাক্ট () ব্যবহার করতে পারেন।
DateTime outputDateTimeValue;
if (DateTime.TryParseExact("2009-05-08 14:40:52,531", "yyyy-MM-dd HH:mm:ss,fff", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out outputDateTimeValue))
{
return outputDateTimeValue;
}
else
{
// Handle the fact that parse did not succeed
}
একটি স্ট্যাটিক শ্রেণিতে এই কোডটি রাখুন> public static class ClassName{ }
public static DateTime ToDateTime(this string datetime, char dateSpliter = '-', char timeSpliter = ':', char millisecondSpliter = ',')
{
try
{
datetime = datetime.Trim();
datetime = datetime.Replace(" ", " ");
string[] body = datetime.Split(' ');
string[] date = body[0].Split(dateSpliter);
int year = date[0].ToInt();
int month = date[1].ToInt();
int day = date[2].ToInt();
int hour = 0, minute = 0, second = 0, millisecond = 0;
if (body.Length == 2)
{
string[] tpart = body[1].Split(millisecondSpliter);
string[] time = tpart[0].Split(timeSpliter);
hour = time[0].ToInt();
minute = time[1].ToInt();
if (time.Length == 3) second = time[2].ToInt();
if (tpart.Length == 2) millisecond = tpart[1].ToInt();
}
return new DateTime(year, month, day, hour, minute, second, millisecond);
}
catch
{
return new DateTime();
}
}
এইভাবে, আপনি ব্যবহার করতে পারেন
string datetime = "2009-05-08 14:40:52,531";
DateTime dt0 = datetime.TToDateTime();
DateTime dt1 = "2009-05-08 14:40:52,531".ToDateTime();
DateTime dt5 = "2009-05-08".ToDateTime();
DateTime dt2 = "2009/05/08 14:40:52".ToDateTime('/');
DateTime dt3 = "2009/05/08 14.40".ToDateTime('/', '.');
DateTime dt4 = "2009-05-08 14:40-531".ToDateTime('-', ':', '-');
আমি সবেমাত্র একটি মার্জিত উপায় পেয়েছি:
Convert.ChangeType("2020-12-31", typeof(DateTime));
Convert.ChangeType("2020/12/31", typeof(DateTime));
Convert.ChangeType("2020-01-01 16:00:30", typeof(DateTime));
Convert.ChangeType("2020/12/31 16:00:30", typeof(DateTime), System.Globalization.CultureInfo.GetCultureInfo("en-GB"));
Convert.ChangeType("11/شعبان/1437", typeof(DateTime), System.Globalization.CultureInfo.GetCultureInfo("ar-SA"));
Convert.ChangeType("2020-02-11T16:54:51.466+03:00", typeof(DateTime)); // format: "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffzzz"
বিশ্বের বিভিন্ন সংস্কৃতি বিভিন্ন উপায়ে তারিখের স্ট্রিং লিখেছে। উদাহরণস্বরূপ, মার্কিন যুক্তরাষ্ট্রে 01/20/2008 20 শে জানুয়ারী, ২০০৮ France কারণ ফ্রান্স দিন / মাস / বছর হিসাবে তারিখের বার পড়ে এবং মার্কিন যুক্তরাষ্ট্রে এটি মাস / দিন / বছর হয়।
ফলস্বরূপ, 20/01/2008 এর মতো একটি স্ট্রিং ফ্রান্সে 20 শে জানুয়ারী, 2008 এ বিশ্লেষণ করবে এবং তারপরে মার্কিন যুক্তরাষ্ট্রে একটি অবৈধ ফর্ম্যাট এক্সেকশনটি ছুঁড়ে দেবে।
আপনার বর্তমান সংস্কৃতি সেটিংস নির্ধারণ করতে আপনি সিস্টেম.গ্লোবালাইজেশন.ক্ল্যাচারআইনফোর.কন্টেনচারালচার ব্যবহার করতে পারেন।
string dateTime = "01/08/2008 14:50:50.42";
DateTime dt = Convert.ToDateTime(dateTime);
Console.WriteLine("Year: {0}, Month: {1}, Day: {2}, Hour: {3}, Minute: {4}, Second: {5}, Millisecond: {6}",
dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second, dt.Millisecond);
String now = DateTime.Now.ToString("YYYY-MM-DD HH:MI:SS");//make it datetime
DateTime.Parse(now);
এই আপনাকে দেয়
2019-08-17 11:14:49.000
আপনি এটি দ্রুত চান?
ধরা যাক yyMMdd ফর্ম্যাট সহ আপনার একটি তারিখ রয়েছে।
আমি এটির রূপান্তর করার দ্রুততম উপায় হ'ল:
var d = new DateTime(
(s[0] - '0') * 10 + s[1] - '0' + 2000,
(s[2] - '0') * 10 + s[3] - '0',
(s[4] - '0') * 10 + s[5] - '0')
কেবলমাত্র আপনার পছন্দসই তারিখের ফর্ম্যাট অনুসারে সূচিগুলি চয়ন করুন। আপনার যদি গতির প্রয়োজন হয় তবে সম্ভবত আপনি ফাংশনের 'অ-জেনেরিক' উপায়টিকে আপত্তি করবেন না।
এই পদ্ধতিটি দ্বারা প্রয়োজনীয় সময়ের প্রায় 10% সময় নেয়:
var d = DateTime.ParseExact(s, "yyMMdd", System.Globalization.CultureInfo.InvariantCulture);
@CMS
একটি উত্তর হিসাবে চিহ্নিত করা হয়নি? আমি উত্সাহী একটি কারণ থাকতে পারে।