Софтуерно Инженерство
Loading...
+ Нов въпрос
ArmenPotourlyan avatar ArmenPotourlyan 488 Точки

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

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

string dateStr = Console.ReadLine();

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

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

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

3
MorganFreeFarm avatar MorganFreeFarm 60 Точки

Благодаря !

 

0
Filkolev avatar Filkolev 4428 Точки

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

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

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

0
Woofles avatar Woofles 7 Точки

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

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

0
vivanov79 avatar vivanov79 1 Точки

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

0
angel.neychev avatar angel.neychev 21 Точки

Здравейте, 
Нещо не се получават отговорите, ето го и моя код.
 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var inDate = Console.ReadLine();
            var outDate = DateTime.ParseExact(inDate, "dd-mm-yyyy", null);
            outDate = outDate.AddDays(999);
            Console.WriteLine(outDate.ToString("dd-mm-yyyy"));
        }
    }
}

Като "контролната" дата дадена в упражението (25-02-1995) получавам 20-02-1997 г., което са 726 дни (или 2 години точно). 
Отговота който трябва да получа на изхода е 20-11-1997. 
Не разбирам защо изкарава този резултат. 
Ако може някой да разясни къде бъркам, ще съм благодарен? :)

0
dimaldim92 avatar dimaldim92 134 Точки

Промени си mm на MM и си готов ;)

 

mm - минути (00 до 59)

MM - месеци ( 1 до 12 )

0
03/09/2018 14:37:17
angel.neychev avatar angel.neychev 21 Точки

Благодаря :)  (ще трябва да прегледам форматирането пак) :) 
Edit: Коригирах и дните на 1000 (това е работещо решение)

0
03/09/2018 14:48:24
dimaldim92 avatar dimaldim92 134 Точки

Би трябвало с 999 да ти даде коректен отговор!

0