ডেটটাইম কীভাবে রূপান্তর করবেন? ডেটটাইম


171

আমি একটি নোল ডেটটাইম ( DateTime?) কে এ রূপান্তর করতে চাই DateTime, তবে আমি একটি ত্রুটি পাচ্ছি:

'সিস্টেম.ডেটটাইম' টাইপটি স্পষ্টভাবে রূপান্তর করতে পারে না? 'সিস্টেম.ডেটটাইম' এ। একটি সুস্পষ্ট রূপান্তর বিদ্যমান (আপনি কি একটি কাস্ট মিস করছেন?)

আমি নিম্নলিখিত চেষ্টা করেছি:

DateTime UpdatedTime = (DateTime)_objHotelPackageOrder.UpdatedDate == null 
    ? DateTime.Now : _objHotelPackageOrder.UpdatedDate;

উত্তর:


304

আপনি নাল-কোয়েলসিং অপারেটরটি ব্যবহার করতে চান , যা ঠিক এই উদ্দেশ্যে ডিজাইন করা হয়েছে।

এটি ব্যবহার করে আপনি এই কোডটি শেষ করবেন।

DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate ?? DateTime.Now;

1
এখানে আমি একটি উপস্থাপকের মধ্যে একটি নীলযোগ্য তারিখ / সময় দিয়ে একটি ভিউ পূরণ করার জন্য একটি স্নিপেট ব্যবহার করেছি: memDateLogin = m.memDateLogin ?? DateTime.MinValue
রবি রাম

'তারিখ সময়?' 'আপডেটেডডেট'-এর জন্য ডোজ সংজ্ঞাটি ধারণ করে না
ভাসিল

88

এমএস ইতিমধ্যে এর জন্য একটি পদ্ধতি তৈরি করেছে, সুতরাং আপনাকে নাল কোয়েলসিং অপারেটর ব্যবহার করতে হবে না। কার্যকারিতার মধ্যে কোনও পার্থক্য নেই, তবে অ-বিশেষজ্ঞদের এক নজরে যা ঘটছে তা পাওয়া সহজ।

DateTime updatedTime = _objHotelPackageOrder.UpdatedDate.GetValueOrDefault(DateTime.Now);


24

আপনি একটি সাধারণ castালাই ব্যবহার করতে পারেন:

DateTime dtValue = (DateTime) dtNullAbleSource;

লেয়ানড্রো টুপোন যেমন বলেছিলেন, আপনাকে আগে ভেরটি নাল কিনা তা পরীক্ষা করে দেখতে হবে


6
আপনি +1 এর আগে
লিয়ানড্রো

22

আপনাকে nlalable ডেটটাইম এর মান বৈশিষ্ট্যটি কল করতে হবে । এটি একটি ডেটটাইম ফিরিয়ে দেবে।

Assuming যে UpdatedDateহয় DateTime?, তাহলে এই কাজ করা উচিত:

DateTime UpdatedTime = (DateTime)_objHotelPackageOrder.UpdatedDate == null ? DateTime.Now : _objHotelPackageOrder.UpdatedDate.Value;

কোডটি পড়তে কিছুটা সহজ করার জন্য, আপনি চেকের পরিবর্তে হ্যাসভ্যালু সম্পত্তিটি ব্যবহার করতে পারেন null:

DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate.HasValue
                          ? _objHotelPackageOrder.UpdatedDate.Value
                          : DateTime.Now;

এরপরে এটি আরও সংক্ষিপ্ত করা যেতে পারে:

DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate ?? DateTime.Now;

6

নিম্নলিখিতগুলি সম্পর্কে কীভাবে:

DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate.HasValue ? _objHotelPackageOrder.UpdatedDate.value : DateTime.Now;

6

এখানে একটি স্নিপেট আমি উপস্থাপকের মধ্যে ব্যবহার করেছি একটি নূরেবল তারিখ / সময় দিয়ে একটি ভিউ পূরণ করে

memDateLogin = m.memDateLogin ?? DateTime.MinValue


1

নিম্নলিখিতটি ব্যবহারের বিষয়ে বিবেচনা করুন যা এটি গ্রহণযোগ্য উত্তরের চেয়ে অনেক ভাল

DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate == null 
    ? DateTime.Now : (DateTime)_objHotelPackageOrder.UpdatedDate;

কেন বলার অপেক্ষা রাখে?
n4rzul


0
DateTime UpdatedTime = _objHotelPackageOrder.HasValue ? _objHotelPackageOrder.UpdatedDate.Value : DateTime.Now;

4
আপনার পরামর্শ / উত্তরগুলি ব্যাখ্যা করার জন্য এটি স্বাভাবিকভাবেই ভাল ফর্ম হিসাবে বিবেচিত। প্রযুক্তিগতভাবে সঠিক থাকলেও কেবল কোডের উত্তরগুলি আশ্চর্যজনকভাবে অবজ্ঞাতহীন হতে পারে।
ম্যাক্সিমিলিয়ান এস্ট

1
@ ম্যাক্সিমিলিয়ান হ্যাঁ আপনি ঠিক বলেছেন আপনি যেভাবে পরামর্শ দিয়েছেন তা বাস্তবায়নের চেষ্টা করবেন :)
হর্ষ ব্যাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.