একটি ডেটটাইম থেকে দিনগুলি বিয়োগ করুন


142

আমার সি # প্রোগ্রামে আমার নীচের কোড রয়েছে।

DateTime dateForButton =  DateTime.Now;  
dateForButton = dateForButton.AddDays(-1);  // ERROR: un-representable DateTime

আমি যখনই এটি চালাব, আমি নিম্নলিখিত ত্রুটিটি পেয়েছি:

সংযুক্ত-উপস্থাপনযোগ্য তারিখের সময় যুক্ত হওয়া বা বিয়োগফলের ফলাফল।
প্যারামিটারের নাম: মান

আইভ'ই এর আগে কখনও এই ত্রুটি বার্তাটি দেখেনি এবং আমি কেন এটি দেখছি তা বুঝতে পারি না। আমি এখনও অবধি পড়ে থাকা উত্তরগুলি থেকে, আমি বিশ্বাস করতে শুরু করি যে আমি দিনগুলি বিয়োগ করার জন্য একটি অ্যাড অপারেশনে -1 ব্যবহার করতে পারি, তবে আমার প্রশ্নটি দেখায় যে আমি যা করার চেষ্টা করছি তার ক্ষেত্রে এটি ঘটেনি।


কাজ করা উচিত, এই সমস্যা এলাকা?
ভি 4 ভেন্ডেটা

1
এটি কাজ করতে হবে, এটির সাথে কোনও সমস্যা দেখবেন না ...
টিগ্রান

12
এই ত্রুটিটি সাধারণত তখন ঘটে থাকে যখন আপনি কোনও বিরতি বিয়োগ করার চেষ্টা করেন DateTime.MinValueবা আপনি কিছু যুক্ত করতে চান DateTime.MaxValue(বা আপনি এই ন্যূনতম-সর্বোচ্চ ব্যবধানের বাইরে কোনও তারিখ ইনস্ট্যান্ট করার চেষ্টা করেন)। আপনি কি নিশ্চিতরূপে MinValueকোথাও নিয়োগ দিচ্ছেন না ?
সাইবারডুড

1
সাইবারডুড, আপনার মন্তব্যটি আসলে উত্তর। আমি কীভাবে আপনার মন্তব্যে ভোট দিতে পারি এবং উত্তর হিসাবে এটি অর্পণ করতে পারি?
বুয়েনা

1
আপনার কোডের 2 এবং 3 লাইনের মধ্যে কোডটি পোস্ট করুন
পানাজিওটিস কানভোস

উত্তর:


70

এই ত্রুটিটি সাধারণত তখন ঘটে থাকে যখন আপনি কোনও বিরতি বিয়োগ করার চেষ্টা করেন DateTime.MinValueবা আপনি কিছু যুক্ত করতে চান DateTime.MaxValue(বা আপনি এই ন্যূনতম-সর্বোচ্চ ব্যবধানের বাইরে কোনও তারিখ ইনস্ট্যান্ট করার চেষ্টা করেন)। আপনি কি নিশ্চিতরূপে MinValueকোথাও নিয়োগ দিচ্ছেন না ?


287
DateTime dateForButton = DateTime.Now.AddDays(-1);

14
এই উত্তর, বিষয় শিরোনাম উত্তর। এটিকে কখনই হ্রাস করা উচিত নয়। গুগল থেকে বেশিরভাগ লোক এখানে আসে। যদি কেউ এই উত্তরের সাথে একমত না হন তবে বিষয় শিরোনামে একটি সম্পাদনা দেওয়া উচিত। ¬¬
MarceloBarbosa

এমনকি কয়েক মাস ধরে আমার জন্য কাজ করেছেন।
ডেভিড জোনস


38

আপনি নিম্নলিখিত কোড ব্যবহার করতে পারেন:

dateForButton = dateForButton.Subtract(TimeSpan.FromDays(1));

4
তারিখটি ডেটটাইম.মিনভ্যালু হলে এটিও ব্যর্থ হবে। অ্যাডডেস (-1) ঠিক পাশাপাশি কাজ করে
পানাজিওটিস কানভোস

7

dateTime.AddDays(-1) থেকে একদিন বিয়োগ না dateTimeরেফারেন্স। এটি একটি নতুন উদাহরণ ফিরে আসবে, সেই একদিন মূল রেফারেন্স থেকে বিয়োগ করে।

DateTime dateTime = DateTime.Now;
DateTime otherDateTime = dateTime.AddDays(-1);

এটি কীভাবে ওপির সমস্যার সমাধান করবে তা বোঝানোর জন্য যত্নশীল? প্রায় কেউ কোড লিখতে পারে, এটি সহজ অংশ। (তবে, এই ক্ষেত্রে, আমি আসলে দেখতে পাচ্ছি না যে এটি কীভাবে ওপি-র সমস্যাটি একেবারে সমাধান করবে))
চারস্পতিবারের রাত ১night

5

অ্যাডডেস (-1) ব্যবহার করে আমার সমস্যা হয়েছে ।

আমার সমাধান টাইমস্প্যান

DateTime.Now - TimeSpan.FromDays(1);

আপনার সঠিক সমস্যা কি ছিল?
আরশ.জান্দি

4

অ্যাডডেস পদ্ধতির জন্য অবজেক্ট (অর্থাত্ গন্তব্য পরিবর্তনশীল) উত্সের মতো হতে পারে না।

পরিবর্তে:

DateTime today = DateTime.Today;
today.AddDays(-7);

পরিবর্তে এটি চেষ্টা করুন:

DateTime today = DateTime.Today;
DateTime sevenDaysEarlier = today.AddDays(-7);

1
যদি আমরা অন্যান্য বিদ্যমান উত্তরগুলির দিকে তাকিয়ে থাকি তবে এই উত্তরটি সত্যই নতুন পয়েন্ট আনবে না।
ইসুকা

1

তারিখ অবজেক্ট থেকে সরাসরি দিনের সংখ্যা হ্রাসের পরিবর্তে প্রথমে তারিখের মান পান তারপরে দিনগুলি বিয়োগ করুন। নীচে উদাহরণ দেখুন:

DateTime SevenDaysFromEndDate = someDate.Value.AddDays(-1);

এখানে, কিছু তারিখ হ'ল ডেটটাইম টাইপের একটি পরিবর্তনশীল।


0

ব্যবহার করা AddDays(-1)আমার জন্য কাজ না হওয়া পর্যন্ত আমি ক্রস মাসের করার চেষ্টা করেছেন। আমি যখন 2017-01-01 থেকে 2 দিন বিয়োগ করার চেষ্টা করেছি ফলাফল ছিল 2016-00-30। এটি মাসের পরিবর্তনটি সঠিকভাবে পরিচালনা করতে পারেনি (যদিও বছরটি ভাল মনে হয়েছিল)।

আমি ব্যবহৃত date = Convert.ToDateTime(date).Subtract(TimeSpan.FromDays(2)).ToString("yyyy-mm-dd"); এবং কোন সমস্যা আছে।

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