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 1550 Точки

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

1
ElisavetaRaycheva avatar ElisavetaRaycheva 3 Точки

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

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

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

1
quickben avatar quickben 966 Точки

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

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

1
09/10/2015 20:01:10
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.