Използване на ParseExact(str, format), AddDays(count) и ToString(format) - Софтуерен университет

Използване на ParseExact(str, format), AddDays(count) и ToString(format) - Софтуерен университет

+ Нов въпрос
ArmenPotourlyan avatar ArmenPotourlyan 487 Точки

ParseExact(str, format):

Първият параметър e стрингът, от който искаш трансформираш в DateTime, а вторият задава формата, който се очаква (напр. "yyMMdd hhmmss"). Впрочем мисля, че има и трети параметър за културата...

Идеята на метода е, че очакваш точно определен формат на датата, който е различен от стандартните формати(можеш да ги провериш в MSDN).

AddDays(count):

Добавяш стойност, отговаряща на брой дни към текущата дата.

ToString(format):

Преобразува DateTime в стринг, като при това се задава точния формат (напр. "MM/dd/yyyy HH:mm:ss.fff"). Мисля, че има overload-нат метод, който да приема като параметър културата.

Препоръчвам ти да прегледаш стандартните формати на DateTime в MSDN.

Пример:

string dateStr = "11112002";
DateTimе date = DateTime.ParseExact(dateStr, "yyyyddMM", CultureInfo.InvariantCulture);
Console.WriteLine(date.ToString("dd.MM.yyyy"));  // 20.02.1111 в конзолата

5
10/03/2016 16:42:28
MorganFreeFarm avatar MorganFreeFarm 60 Точки

А как, да вземем дата, която въвежда потребителя ?

0
ArmenPotourlyan avatar ArmenPotourlyan 487 Точки

Ами запазваш в стринг променлива прочетеното от конзолата:

string dateStr = Console.ReadLine();

И после си я преобразуваш в DateTime с Parse(), TryParse() или ParseExact();

Може и директно като параметър в метода:

DateTime dt = DateTime.Parse(Console.ReadLine());

2
MorganFreeFarm avatar MorganFreeFarm 60 Точки

Благодаря !

 

0
Filkolev avatar Filkolev 4425 Точки

Документацията на тези методи прочете ли? Ако да, какво не ти стана ясно? Ако не си, хубаво е първо там да започнеш.

1
enevlogiev avatar enevlogiev 1169 Точки

Понякога документацията е малко тегава за новаци, особено MSDN.

6
D_Dimitrov92 avatar D_Dimitrov92 5 Точки

Като  използвам ParseExact при въвеждане на третия параметър(култура) CultureInfo не ми го отчита като параметър, веднага го подчертава  като грешка.А до колкото разбрах чрез ParseExact се определя формата на датата .

 

0
ralitsa_d avatar ralitsa_d 171 Точки

Трябва да добавиш глобализация, за да можеш да използваш метода DateTime:

using System;
using System.Globalization;

class Program
{
    static void Main(string[] args)
    {
        string input = Console.ReadLine();

        DateTime date = DateTime.ParseExact(input, "ddMMyyyy", CultureInfo.InvariantCulture);
    }
}

 

 

5
Woofles avatar Woofles 7 Точки

А случайно да имаш проблем с отговора? На мен Judge винаги ми връща като отговор един ден по-рано.
Нужно ли е допълнително настройване за времеви зони?

0
r3v3nan7 avatar r3v3nan7 363 Точки

Ами пробва ли вместо AddDays(1000) просто да му зададеш AddDays(999)

0
Woofles avatar Woofles 7 Точки

Как мислиш? :) Аз и така си изкарах точките естествено, понеже няколко онлайн калкулатора ми дават същият отговор, който кодът ми връща с 1000 дни.

Просто ми е интересно дали грешката е в някакви неявни настройки или в тестовете, които ползва Judge системата.

0
vivanov79 avatar vivanov79 1 Точки

Здравейте и от мен. И при мен се получава същото нещо с AddDays(1000), но с 999 се получава и сичко е ОК.

0