Професионална програма
Loading...
+ Нов въпрос
simeon_petrov avatar simeon_petrov 45 Точки

[Homework] C# Basics Тема: C# Advanced Topics парсване на дати

В първата задача от домашното имаме да намерим разликата в дни между две дати.

Като парсвах датите забелязах следното нещо: На единия ми компютър всичко се парсна без проблеми от формата 17.03.2014, да де ама на другия не ще. Там трябва да е във формат MM/dd/yyyy.

Та въпросът ми е, от кои точно настройки на компютъра зависи какъв ще е форматът и как да накарам компилатора да приеме форматът, който на мен ми е най-удобен в случая dd.MM.yyyy.

Гледах, че има разни разширени настройки на Parse и ParseExact и пробвах разни комбинации от рода на

CultureInfo provider = CultureInfo.InvariantCulture;

Пробвах с DateTime start = DateTime.Parse(startStr, provider, DateTimeStyles.AllowWhiteSpaces);

Ама нещо не става, не разбирам, какво точно трябва да се даде като параметри?

Стана по този начин:

DateTime end = DateTime.ParseExact(endStr,"dd.MM.yyyy",provider);

Проблемът тук е, че ако е 05.12.2014 го  приема, но ако е 5.12.2014 гърми. Та как да го реша този проблем с дни и месеци от една цифра?

Тагове:
2
Programming Basics
Grozev_junior avatar Grozev_junior 5 Точки

Трябва да имаш само едно "d" във формата, защото като имаш "dd" за едноцифрените задължителко изисква "0" отпред. 

2
simeon_petrov avatar simeon_petrov 45 Точки

Хм.. да бе работи, защо ми се струва, че го пробвах снощи и нещо не стана.

Благодаря, колега :)

0
karalilovakatrin avatar karalilovakatrin 0 Точки

Здрасти, 

ако искаш да смениш формата на датата с по-удобен за теб влизаш в контролния панел, пишеш "Region and Language" и там имаш форматите за датата, час и прочее.Има много варианти, можеш да си го нагласиш, както искаш.

0
Samuil.Petrow avatar Samuil.Petrow 1549 Точки

Това не е добър подход, редно е да става програмно, защото ако трябва дадеш програмата на някого, ще трябва и той да си сменя настройките.

1
ElisavetaRaycheva avatar ElisavetaRaycheva 3 Точки

Използвай TryParseExact()       

DateTime.TryParseExact(Console.ReadLine(), "dd.MM.yyyy", CultureInfo.InvariantCulture,
                               DateTimeStyles.None, out dtStart);

С тази функция ти определяш формата на входните данни.

1
quickben avatar quickben 974 Точки

Правиш един масив със всички най-използвани формати за дати, въртиш го в един for цикъл и проверяваш с try parse и/или try parse exact, не се сещам точно коя команда е, отдавна правих продобна програма която да приема повечето валидни дати и това измислих на времето :)

Нещо подобно ----> http://pastebin.com/52xvesqj

1
09/10/2015 20:01:10