Como já foi dito, você pode usar DateTime
ae ignorar a data ou a TimeSpan
. Pessoalmente, não estou interessado em nenhuma dessas soluções, pois nenhum dos dois reflete realmente o conceito que você está tentando representar - considero os tipos de data / hora no .NET um pouco do lado escasso, e esse é um dos motivos pelos quais comecei. Hora de Noda . No Noda Time, você pode usar o LocalTime
tipo para representar uma hora do dia.
Uma coisa a considerar: a hora do dia não é necessariamente a duração desde a meia-noite do mesmo dia ...
(Como outro aparte, se você também deseja representar o horário de fechamento de uma loja, pode achar que deseja representar 24:00, ou seja, o horário no final do dia. A maioria das APIs de data / hora - incluindo Noda Hora - não permita que isso seja representado como um valor da hora do dia.)
Duration
no Noda Time, ouTimeSpan
no BCL. Eu provavelmente encapsularia o "lugar no vídeo + comentário" como um tipo e, em seguida, teria uma matriz desse tipo.Você pode usar o período
[Editar]
Considerando as outras respostas e a edição da pergunta, eu ainda usaria o TimeSpan. Não faz sentido criar uma nova estrutura em que uma estrutura existente seja suficiente.
Nessas linhas, você acabaria duplicando muitos tipos de dados nativos.
fonte
TimeSpan
tipo é um pouco feio. É o melhor que está disponível no próprio framework, mas não é o mesmo que dizer que é agradável.Se esse vazio
Date
realmente o incomoda, você também pode criar umaTime
estrutura mais simples :Ou por que se preocupar: se você não precisar fazer nenhum cálculo com essas informações, armazene-as como
String
.fonte
TimeSpan
, que já lida com isso, e de uma maneira significativamente melhor.Eu digo usar um DateTime. Se você não precisar da parte da data, ignore-a. Se você precisar exibir apenas a hora para o usuário, faça a saída formatada para o usuário desta forma:
Parece que todo o trabalho extra de criar uma nova classe ou até mesmo usar um TimeSpan é desnecessário.
fonte
DateTime.Now.ToString("hh:mm:ss.fff");
microssegundos:DateTime.Now.ToString("hh:mm:ss.ffffff");
nanossegundos (se DateTime tem mesmo que muito resolução):DateTime.Now.ToString("hh:mm:ss.fffffffff");
Como por MSDNEu acho que a aula de Rubens é uma boa idéia, então pensei em fazer uma amostra imutável da aula Time com validação básica.
fonte
Além do Chibueze Opata :
fonte
Aqui está uma classe TimeOfDay com todos os recursos.
Isso é um exagero para casos simples, mas se você precisar de funcionalidades mais avançadas como eu, isso pode ajudar.
Ele pode lidar com os casos de canto, matemática básica, comparações, interação com DateTime, análise, etc.
Abaixo está o código fonte da classe TimeOfDay. Você pode ver exemplos de uso e saber mais aqui :
Essa classe usa o DateTime para a maioria de seus cálculos e comparações internas, para que possamos aproveitar todo o conhecimento já incorporado no DateTime.
fonte
Se você não quiser usar um DateTime ou TimeSpan, e apenas desejar armazenar a hora do dia, poderá armazenar os segundos desde a meia-noite em um Int32 ou (se você não quiser segundos) os minutos desde a meia-noite caberia em um Int16. Seria trivial escrever os poucos métodos necessários para acessar a Hora, Minuto e Segundo a partir desse valor.
A única razão pela qual posso pensar em evitar DateTime / TimeSpan seria se o tamanho da estrutura fosse crítico.
(Obviamente, se você usar um esquema simples como o descrito acima em uma classe, também seria trivial substituir o armazenamento por um TimeSpan no futuro se você perceber de repente que isso lhe daria uma vantagem)
fonte