ओवरटाइम के साथ DateTime.Parse

Aug 18 2020

क्या DateTime.Parse के लिए एक विकल्प है जो इस तरह से एक अतिप्रवाह तिथि या महीने को स्वीकार करेगा?

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace Tests
{
    [TestClass]
    public class DateTimeTest
    {
        [TestMethod]
        public void TestOverflowOfDay()
        {
            var dt = DateTime.Parse("2020-01-32");

            var str = dt.ToString();

            Assert.AreEqual("2020-02-01 00:00:00", str);
        }
    }
}

यह कोड में जो परिणाम System.FormatExceptionपर DateTime.Parseलाइन।

स्ट्रिंग को मान्य दिनांक समय के रूप में मान्यता नहीं दी गई थी

क्या मैं अतिप्रवाह की अनुमति देने वाले तार को पार्स कर सकता हूं ताकि इसे माना जाएगा "2020-02-01"?

यह अन्य भाषाओं / कार्यान्वयन में मानक प्रतीत होता है।

जवाब

1 GarrisonBecker Aug 18 2020 at 18:35

मुझे नहीं पता कि आप अपना रोल बनाए बिना ऐसा कैसे कर सकते हैं। यदि आप अपने डेटासेट के प्रारूप को जानते हैं, तो आप निम्न या कुछ इसी तरह कर सकते हैं।

        static void Main(string[] args)
        {
            var date = GetCustomDateTime("2020-01-32");

            Console.WriteLine(date.ToString("yyyy-MM-dd HH:mm:ss"));
        }

        private static DateTime GetCustomDateTime(string dateTimeString)
        {
            var split = dateTimeString.Split('-');
            var yearMonth = DateTime.ParseExact($"{split[0]}-{split[1]}", "yyyy-MM", CultureInfo.InvariantCulture);

            return yearMonth.AddDays(int.Parse(split[2])-1);
        }

यह दिन के उजाले के समय से प्रभावित नहीं है, यहाँ खट्टा है ।

स्थानीय तिथि और समय मानों पर अंकगणित या तुलनात्मक संचालन इस बात पर विचार नहीं करते हैं कि क्या कोई विशेष महत्व अस्पष्ट या अमान्य है, और न ही वे किसी भी समायोजन नियमों के प्रभाव का ध्यान रखते हैं जो स्थानीय समय क्षेत्र के संक्रमण से या दिन के उजाले की बचत समय से उत्पन्न होते हैं।