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


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.