দশমিক মানগুলি ডেটটাইম.পার্স থেকে মিথ্যা ফিরিয়ে দেওয়ার পরিবর্তে ডেটটাইম হিসাবে স্বীকৃত


9

স্ট্রিং মানের উপর ভিত্তি করে আমার চেক সম্পাদন করতে হবে এটির তারিখ বা দশমিক তবে তারিখ পার্সি সর্বদা দশমিকের জন্য সত্য হয় কিনা return

string val = "3.5";
DateTime oDate = DateTime.Parse(val);

এটি একটি বৈধ তারিখ ফেরত দেয় 3/5/2019

তারিখের ফর্ম্যাটটি জানা না গেলে তার বৈধ তারিখটি জানতে স্ট্রিং কীভাবে বৈধ করবেন?


6
প্রথমে দশমিকের জন্য চেক করুন? অথবা DateTime.ParseExactআপনি যদি জানেন যে এটি কোন ফর্ম্যাটগুলি নিতে পারে / নিতে পারে
এ বন্ধু

3
আপনি TryParseExactবৈধ তারিখের ফর্ম্যাটগুলি ব্যবহার এবং নির্দিষ্ট করতে পারেন ।
juharr

5
প্রকৃতপক্ষে - DateTime.Parseএকাধিক নিদর্শন চেষ্টা করে। যদি আপনি কেবল নির্দিষ্টগুলি সনাক্ত করতে চান তবে তাদের বিশেষভাবে পার্স করার চেষ্টা করুন।
জন স্কিটি

উত্তর:


3

"স্ট্রিংয়ের বৈধ তারিখটি কীভাবে তা বৈধ করবেন?"

সমস্যাটি হ'ল একটি বৈধ তারিখ "3.5" হিসাবে বিবেচিত হয় (এবং এক দশমিকও)।

আপনি যদি দশমিক ধরণের সর্বদা "জয়" করতে চান (যেমন আপনি চান না isDateএবং isDecimalউভয়ই হয়ে থাকেন true), আপনার বৈধতার মধ্যে দশমিক চেক অন্তর্ভুক্ত করুন।

এটি করার একটি উপায় হ'ল স্ট্রিংটিকে কোনও ধরণের রূপান্তরিত করা যায় কিনা তা নির্ধারণ করার জন্য TryParseপদ্ধতিগুলি (যা boolকোনও স্ট্রিংকে টাইপের মধ্যে পার্স করা যায় এবং যা outরূপান্তরিত মানের একটি পরামিতি সেট করে ) ব্যবহার করে:

string val = "3.5";

// temp variables to hold parsed values
DateTime tmpDate;
decimal tmpDec;
int tmpInt;

var isDecimal = decimal.TryParse(val, out tmpDec);
var isInteger = int.TryParse(val, out tmpInt);

// When checking if it's a DateTime, make sure it's not also a decimal
var isDate = !isDecimal && DateTime.TryParse(val, out tmpDate);

আমি ইতিমধ্যে চেষ্টা করেছিলাম কিন্তু 3.5 একটি বৈধ তারিখ এবং একটি বৈধ দশমিক তাই এটি কোনও উপকারে আসে না।
মুনাওয়ার

1
উপরের কোড ইন, isDateহয় falseকারণ এটি জন্য একটি চেক অন্তর্ভুক্ত isDecimal। আপনি যা চেয়েছিলেন তা কি তাই নয়?
রুফাস এল

2
@ মুনাওয়ার - "3.5 একটি বৈধ তারিখ এবং একটি বৈধ দশমিক" হুবহু। মানুষ হিসাবে যদি আমরা সেই স্ট্রিং এবং অন্য কোনও প্রসঙ্গের সাথে উপস্থাপন করা হয় তবে আমরা জানি না যে এটি কোনও তারিখ, দশমিক বা সম্ভাব্য অন্য কিছু হতে পারে । আপনি কম্পিউটারটিকে যাদুতে এর উত্তর পেতে আশা করতে পারেন না।
ড্যামিয়েন_এ_বিশ্বাসীরা

হ্যাঁ, এই উত্তরটি ইস্যুটির সাথে সুনির্দিষ্ট এবং আমার সমস্যার সমাধান করে যদিও ফর্ম্যাটগুলি জানা থাকলে পার্সেক্স্যাক্ট সবচেয়ে উপযুক্ত হবে।
মুনাওয়ার

"12122019" তারিখের ফর্ম্যাটটি উপস্থিত হওয়ার সময় আপনার সমস্যাটি আটকে থাকবে
অ্যাথানাসিওস কাতারস

6

পার্সেক্স্যাক্টে সরকারী ডকুমেন্টেশন পরীক্ষা করুন Check

আপনি যদি সঠিক প্রতিনিধিত্ব জানেন তবে আপনি এই জাতীয় কিছু করতে পারেন:

  format = "ddd dd MMM yyyy h:mm tt zzz";
  try {
     result = DateTime.ParseExact(dateString, format, provider);
     Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
  }
  catch (FormatException) {
     Console.WriteLine("{0} is not in the correct format.", dateString);
  }

যদি আপনি এটি জানেন না, তবে আপনি সাংস্কৃতিক সম্মেলনে আটকে গেছেন

নির্দিষ্ট সংস্কৃতির কনভেনশন ব্যবহার করে একটি তারিখ এবং সময়ের স্ট্রিং পার্স করুন। পার্স (স্ট্রিং, আইফর্ম্যাটপ্রোভাইডার) ওভারলোড (পার্সিং এবং সাংস্কৃতিক সম্মেলন দেখুন)


ফর্ম্যাটটি জানা নেই এটি ব্যবহারকারীর পছন্দ অনুসারে কোনও হতে পারে।
মুনাওয়ার

1
@ মুনাওয়ার এই পরিস্থিতিতে আপনি কীভাবে 1/3/2019 এবং 3/1/2019 এর মধ্যে পার্থক্য করবেন?
ব্লেইস

@ অ্যাথানাসিয়াস, অ্যাপ্লিকেশনটি বিভিন্ন অঞ্চল এবং এনক্রিপ্ট করা তারিখের জন্য ব্যবহৃত হয়। যেহেতু, ব্যবহারকারী তারিখের ফর্ম্যাটগুলি পরিবর্তন করতে পারে তাই নির্দিষ্ট ফর্ম্যাট প্রয়োগের সাথে গোলযোগ করতে চান না যদিও ফর্ম্যাটটি জানা থাকলে পার্সেক্স্যাক্ট সবচেয়ে উপযুক্ত fit
মুনাওয়ার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.