chr
2026-04-05 fe750b791d5b517cc4e9bc8e99a9a75139a0cfba
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using System;
using System.Collections.Generic;
using System.Globalization;
 
namespace OpenTap
{
    class DateTimeAnnotation : IStringValueAnnotation, ICopyStringValueAnnotation, IErrorAnnotation
    {
        private readonly AnnotationCollection annotation;
        private string currentError = null;
        public string Value
        {
            get
            {
                // date time format similar to what is being produces by logs (without ms).
                // The default invariant culture is MM/dd/yyyy ... which we dont use anywhere else.
                var dateTimeFormat = "yyyy-MM-dd HH:mm:ss";
                if (annotation.Get<IObjectValueAnnotation>(from: this).Value is DateTime dt)
                    
                    return dt.ToString( dateTimeFormat,CultureInfo.InvariantCulture);
                return "";
            }
            set
            {
                try
                {
                    annotation.Get<IObjectValueAnnotation>(from: this).Value = DateTime.Parse(value, DateTimeFormatInfo.InvariantInfo);
                    currentError = null;
                }
                catch (Exception ex)
                {
                    currentError = ex.Message;
                }
            }
        }
 
        public DateTimeAnnotation(AnnotationCollection annotation)
        {
            this.annotation = annotation;
        }
 
        public IEnumerable<string> Errors => currentError == null ? Array.Empty<string>() : new[] { currentError };
    }
}