Как я представляю время, только оценивают в.NET?

Существует ли способ, которым можно представить время, только оценивают в.NET без даты? Например, указывая время открытия магазина?

TimeSpan указывает на диапазон, тогда как я только хочу сохранить временную стоимость. Используя DateTime указать на это привело бы к новому DateTime(1,1,1,8,30,0) который не действительно желателен.

219
задан niico 11 December 2016 в 13:59
поделиться

4 ответа

Как говорили другие, вы можете использовать DateTime и игнорировать дату или использовать TimeSpan. Лично мне не нравится ни одно из этих решений, так как ни тот, ни другой тип действительно не отражает концепцию, которую вы пытаетесь представить - я рассматриваю типы дата/время в .NET как несколько скудные, что является одной из причин, по которой я начал использовать Noda Time. В Noda Time вы можете использовать тип LocalTime для представления времени суток.

Следует учитывать одно обстоятельство: время суток не обязательно является продолжительностью времени с полуночи того же дня...

(Помимо этого, если Вы также хотите представить время закрытия магазина , Вы можете обнаружить, что Вы хотите представить 24:00, т.е. время в конце дня. Большинство API даты/времени, включая Noda Time, не позволяют представлять это время в качестве значения времени суток)

.
134
ответ дан 23 November 2019 в 04:10
поделиться

Вы можете использовать TimeSpan

TimeSpan timeSpan = new TimeSpan(2, 14, 18);
Console.WriteLine(timeSpan.ToString());     // Displays "02:14:18".

[править]
Учитывая другие ответы и редактировать на вопрос, я все равно буду использовать Timeespan. Нет смысла создавать новую структуру, где достаточно существующего из рамочного каркаса.
На этих строках вы получите дублирование многих родных типов данных.

152
ответ дан 23 November 2019 в 04:10
поделиться

Если этот пустой дата действительно ошибок вас, вы также можете создать проще время структуру:

// more work is required to make this even close to production ready
class Time
{
    // TODO: don't forget to add validation
    public int Hours   { get; set; }
    public int Minutes { get; set; }
    public int Seconds { get; set; }

    public override string ToString()
    {  
        return String.Format(
            "{0:00}:{1:00}:{2:00}",
            this.Hours, this.Minutes, this.Seconds);
    }
}

или, почему, чтобы беспокоить: если Вам не нужно делать какие-либо расчеты с этой информацией, просто храните ее как String .

33
ответ дан 23 November 2019 в 04:10
поделиться

Если вы не хотите использовать DateTime или Timepan, и просто хотите хранить время суток, вы можете просто хранить секунды с полуночи в INT32 или (если вы даже не хотите секунды) минут с полуночи вписываются в INT16. Было бы тривиально написать несколько методов, необходимых для доступа к часу, минуту и ​​второй от такого значения.

Единственная причина, по которой я могу подумать о том, чтобы избежать DateTime / Timepan, если размер структуры имеет решающее значение.

(Конечно, если вы используете простую схему, подобную вышеупомянутую в классе, то также было бы тривиально заменить хранилище с помощью времени в будущем, если вы вдруг осознаете, что даст вам преимущество)

2
ответ дан 23 November 2019 в 04:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: