আমি সি # ব্যবহার করে দুটি ডেটটাইম অবজেক্টের মধ্যে সময়ের পার্থক্য কীভাবে পেতে পারি?


159

আমি DateTimeসি # ব্যবহার করে দুটি বস্তুর মধ্যে সময়ের পার্থক্য কীভাবে পেতে পারি ?

উত্তর:


227

নিম্নলিখিত উদাহরণটি দেখায় যে এটি কীভাবে করা যায়:

DateTime a = new DateTime(2010, 05, 12, 13, 15, 00);
DateTime b = new DateTime(2010, 05, 12, 13, 45, 00);
Console.WriteLine(b.Subtract(a).TotalMinutes);

যখন এই প্রিন্টগুলি কার্যকর করা হয় তখন তারিখ / সময়গুলির মধ্যে 30 মিনিটের পার্থক্য রয়েছে।

এর ফলাফলটি DateTime.Subtract(DateTime x)একটি টাইমস্প্যান অবজেক্ট যা অন্যান্য দরকারী বৈশিষ্ট্য দেয়।


5
পার্থক্য প্রদর্শন করতে, ভালো কিছু করতে: Console.WriteLine((a - b).ToString(@"hh\:mm\:ss"))। দেখুন: এমএসডিএন কাস্টম টাইমস্প্যান ফর্ম্যাট
ishmael

এটি আমার পক্ষে কাজ করেছে। আমি কেবল চেয়েছিলাম ক্লায়েন্টকে একটি আরআরএসটি কল করতে এবং পুনরায় উত্তর পেতে কত সেকেন্ড লাগে।
জিগ্লগার

1
মনোযোগ দিন TotalMinutes! (না Minutes)
শাহার শোকরানী

64

আপনি TimeSpanকাঠামো চান :

TimeSpan diff = dateTime1 - dateTime2;

একটি টাইমস্প্যান অবজেক্ট একটি সময় বিরতি (সময় বা অতিবাহিত সময়কাল) উপস্থাপন করে যা দিন, ঘন্টা, মিনিট, সেকেন্ড এবং সেকেন্ডের ভগ্নাংশের ধনাত্মক বা নেতিবাচক সংখ্যা হিসাবে পরিমাপ করা হয়। টাইমস্প্যান কাঠামোটি দিনের সময়ের প্রতিনিধিত্ব করতেও ব্যবহৃত হতে পারে তবে সময়টি নির্দিষ্ট তারিখের সাথে সম্পর্কিত না হলেই হয়।

এই কাঠামো থেকে দিন, ঘন্টা, মিনিট, সেকেন্ড এবং মিলিসেকেন্ড ফিরে পাওয়ার জন্য বিভিন্ন পদ্ধতি রয়েছে।

আপনি যদি কেবলমাত্র পার্থক্যে আগ্রহী হন:

TimeSpan diff = Math.Abs(dateTime1 - dateTime2);

অর্ডার নির্বিশেষে আপনাকে সময়ের মধ্যে ইতিবাচক পার্থক্য দেবে।

আপনি যদি কেবল সময়ের উপাদানটি পেয়ে থাকেন তবে সময়গুলি মধ্যরাতের মধ্যে বিভক্ত হতে পারে তবে প্রকৃত পার্থক্য পেতে আপনাকে স্প্যানটিতে 24 ঘন্টা যোগ করতে হবে:

TimeSpan diff = dateTime1 - dateTime2;
if (diff < 0)
{
    diff = diff + TimeSpan.FromDays(1);
}

হাই, যদি ডেটটাইম 2 টা 09:00 হয় এবং ডেটটাইম 1 টা 18:00 হয় তবে পার্থক্য হল 09 ঘন্টা 00 মিনিট। তারপরে ডেটটাইম 2 এর সমীকরণটি 21:00 এবং ডেটটাইম 1 03:00 হয় তবে পার্থক্যটি negativeণাত্মক এবং ভুল। কীভাবে সমাধান করবেন?
প্রাণেশ জনার্থনন

@ প্রাণেশ - যদি বস্তুগুলির কোনও তারিখ থাকে তবে কোনও সমস্যা হওয়া উচিত নয়। যদি সেগুলির একটি সময় না থাকে তবে তা হয় সম্পূর্ণ পার্থক্য নিন বা একটি ইতিবাচক পার্থক্য দেওয়ার জন্য টাইমস্প্যানে 24 ঘন্টা যুক্ত করুন। কোনটি সঠিক তা আপনার আবেদনের উপর নির্ভর করবে।
ChrisF

হ্যাঁ, আমি ইতিমধ্যে সেই মন্তব্যগুলি সরিয়েছি! আপনি কি আমাকে আপনার ব্যাখ্যার জন্য একটি কোড উদাহরণ প্রদর্শন করতে পারেন?
প্রণেশ জনার্থনন

30

আপনার যা প্রয়োজন তা হ'ল ডেটটাইম ক্লাসগুলি সাবট্র্যাক্ট পদ্ধতিটি ব্যবহার করুন যা একটি টাইমস্প্যান রিটার্ন করে ।

var dateOne = DateTime.Now;
var dateTwo = DateTime.Now.AddMinutes(-5);
var diff = dateTwo.Subtract(dateOne);
var res = String.Format("{0}:{1}:{2}", diff.Hours,diff.Minutes,diff.Seconds));

10

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

এখানে একটি উদাহরণ:

DateTime start = DateTime.Now;
// Do some work
TimeSpan timeDiff = DateTime.Now - start;
timeDiff.TotalMilliseconds;

4

যদি সেগুলি উভয়ই ইউটিসি তারিখ-সময় মান হয় তবে আপনি করতে পারেন TimeSpan diff = dateTime1 - dateTime2;

অন্যথায় প্রতিটি সম্ভাব্য ক্ষেত্রে সঠিক উত্তর পাওয়ার সম্ভাবনা শূন্য।


3
 var startDate = new DateTime(2007, 3, 24);

 var endDate = new DateTime(2009, 6, 26);

 var dateDiff = endDate.Subtract(startDate);

 var date = string.Format("{0} years {1} months {2} days", (int)dateDiff.TotalDays / 365, 
 (int)(dateDiff.TotalDays % 365) / 30, (int)(dateDiff.TotalDays % 365) / 30);

 Console.WriteLine(date);



2

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

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