ঘন্টার মধ্যে দুটি ডেটটাইম মানগুলির মধ্যে পার্থক্য দেখানো হচ্ছে


185

আমি ডাটাবেস থেকে দুটি তারিখের সময় মানগুলি পুনরুদ্ধার করছি। মানটি পুনরুদ্ধার হওয়ার পরে, আমার দুটি মানের মধ্যে পার্থক্য দরকার। তার জন্য, আমি 2 তারিখের মানগুলির পার্থক্য সংরক্ষণ করার জন্য একটি টাইমস্প্যান ভেরিয়েবল তৈরি করি।

TimeSpan? variable = datevalue1 - datevalue2;

এখন আমাকে পার্থক্যটি দেখাতে হবে যা সময়ের সংখ্যার ক্ষেত্রে টাইমস্প্যান ভেরিয়েবলে সঞ্চিত থাকে। আমি টাইমস্প্যান.টোটাল ঘন্টাগুলি উল্লেখ করেছি তবে কোনও কারণে এটি প্রয়োগ করতে পারিনি। আমি কেমন করে ঐটি করি? আমি একটি এমভিসি প্রকল্পে সি # ব্যবহার করছি। আমি কি ঘন্টা কয়েক মধ্যে পার্থক্য মান প্রদর্শন করা প্রয়োজন?

সম্পাদনা: যেহেতু টাইমস্প্যানটি অযোগ্য ছিল, তাই আমি মোট ঘন্টা ব্যবহার করতে পারি না couldn't এখন আমি এটি টাইমস্প্যানওয়াল.ভ্যালু.টোটাল ঘন্টাগুলি ব্যবহার করে ব্যবহার করতে পারি ;


3
আপনি কেন ব্যবহার করতে পারেন না TimeSpan.TotalHours?
ফ্রেডরিক মের্ক

এটা আমাকে অনুমতি দেয় না। আমি চেষ্টা করেছিলাম. :(
রেগি

আমার টাইমস্প্যানটি নালাগুল বলেই কি আমি টোটাল আওয়ারের সম্পত্তিটি ব্যবহার করতে পারি না?
রেগি


উত্তর:


118

আমি তোমাদের বিভ্রান্ত কারণ আপনি ঘোষণা করা একটি মনে TimeSpanআপনি ঘোষণা করেছি TimeSpan?যা হয় nullable TimeSpan । হয় প্রশ্নাবলি মুছে ফেলুন যদি আপনার প্রয়োজন হয় না এটি ব্যবহারযোগ্য বা ব্যবহারযোগ্য variable.Value.TotalHours


196

আপনিও দেখতে চাইতে পারেন

var hours = (datevalue1 - datevalue2).TotalHours;

তবে এই ক্ষেত্রে সিস্টেমটি "'System.Nullable <System.TimeSpan>' তে 'টোটাল ঘন্টাস' এর সংজ্ঞা দেয় না এবং কোনও এক্সটেনশন পদ্ধতি 'টোটাল ঘন্টাস' টাইপ করে প্রথমে 'System.Nullable <System.TimeSpan>' টাইপের প্রথম যুক্তি গ্রহণ করতে পারে না পাওয়া ". আপনি কি দয়া করে এর কারণ বলতে পারেন?
নেহা

8
কেবলমাত্র টোটালহর্সের পরিবর্তে নুলাবলির জন্য একটি .ভালিউ.টোটাল ঘন্টাগুলি প্রয়োজন। এটি naclable মোড়ানো একটি ফ্যাক্টর। আপনি বিকল্প হিসাবে এটি টাইমস্প্যান হিসাবে কাস্ট করতে পারেন -> ((টাইমস্প্যান) (nullabledatevalue1 - nullabledatevalue2))। টোটাল ঘন্টাস
মার্ক কেগ্রাইনওয়ে

90

নমুনায়, আমরা দুটি ডেটটাইম অবজেক্ট তৈরি করছি, একটি বর্তমান সময়ের সাথে এবং অন্যটি বর্তমান সময়ে 75 সেকেন্ড যুক্ত। তারপরে আমরা পদ্ধতিটি কল করব। দ্বিতীয় ডেটটাইম অবজেক্টে সাবট্র্যাক্ট () করুন। এটি একটি টাইমস্প্যান অবজেক্ট ফিরিয়ে দেবে। একবার টাইমস্প্যান অবজেক্টটি পাওয়ার পরে আমরা টাইমস্পানের বৈশিষ্ট্যগুলি ব্যবহার করতে পারি প্রকৃত ঘন্টা, মিনিট এবং সেকেন্ডগুলি পেতে।

DateTime startTime = DateTime.Now;

 DateTime endTime = DateTime.Now.AddSeconds( 75 );

 TimeSpan span = endTime.Subtract ( startTime );
 Console.WriteLine( "Time Difference (seconds): " + span.Seconds );
 Console.WriteLine( "Time Difference (minutes): " + span.Minutes );
 Console.WriteLine( "Time Difference (hours): " + span.Hours );
 Console.WriteLine( "Time Difference (days): " + span.Days );

ফলাফল:

Time Difference (seconds): 15
Time Difference (minutes): 1
Time Difference (hours): 0
Time Difference (days): 0

30
আপনি "মোট" যেমন ব্যবহার করতে চান TotalSeconds, TotalMinutesইত্যাদি
ফিলিপ Ekberg

38

আপনি ব্যবহার করছেন এমন কোনও কারণ আছে Nullable?

আপনি যদি ব্যবহার করতে চান Nullableতবে লিখতে পারেন variable.Value.TotalHours

অথবা আপনি শুধু লিখতে পারেন: (datevalue1 - datevalue2).TotalHours


সম্ভবত তারিখের মূল্য 1 বা তারিখের মূল্য 2 হ'লDateTime?
ফিলিপ একবার্গ

@ ফিলিপ, ঠিক আছে, তাদের হওয়া উচিত DateTime। নেট DateTime - DateTime = TimeSpan
ইলিয়া কোগান

1
ইলিয়া, আমি বোঝাতে চাইছি যে তারা সম্ভবত Nullable<DateTime>এবং তাই আপনি একটি পান Nullable<TimeSpan>
ফিলিপ একবার্গ

আপনার উত্তর সত্যই কার্যকর। আমি এটি খুঁজছিলাম।
gdmanandamohon

7

সি # তে দুটি তারিখ বিয়োগ করার আরও একটি উদাহরণ এখানে ...

if ( DateTime.Now.Subtract(Convert.ToDateTime(objDateValueFromDatabase.CreatedOn)).TotalHours > 24 ) 
{ 
... 
} 

3

কর্মচারীদের প্রদত্ত ঘন্টা বা অন্যান্য নির্ভুলতার প্রয়োজনীয়তার জন্য আরও সুনির্দিষ্ট উপায় ::

decimal DeterminePreciseHours(DateTime startTimestamp, DateTime stopTimestamp)
{
    var span = (stopTimestamp - startTimestamp).Value;
    decimal total = (decimal)span.TotalMilliseconds / 60 / 60 / 1000;
    return Math.Round(total, PRECISION_CONSTANT);
}

https://dotnetfiddle.net/tVIoVJ


1
var startTime = new TimeSpan(6, 0, 0); // 6:00 AM
var endTime = new TimeSpan(5, 30, 0); // 5:30 AM 
var hours24 = new TimeSpan(24, 0, 0);
var difference = endTime.Subtract(startTime); // (-00:30:00)
difference = (difference.Duration() != difference) ? hours24.Subtract(difference.Duration()) : difference; // (23:30:00)

যদি আমরা দুটি ভিন্ন তারিখের তুলনা করি তবে তারিখগুলির মধ্যে পার্থক্যও যুক্ত করতে পারে

new TimeSpan(24 * days, 0, 0)

0

বাহ, আমি বলতে চাই: এটি সহজ রাখুন:

MessageBox.Show("Result: " + (DateTime.Now.AddDays(10) > DateTime.Now));

Result: True

এবং:

MessageBox.Show("Result: " + DateTime.Now.AddDays(10).Subtract(DateTime.Now));

Result: 10.00:00:00

ডেটটাইম অবজেক্টে বুলিয়ান ফলাফল হ্যান্ডেল করার জন্য সমস্ত বিল্টিন যুক্তি রয়েছে।

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