Получить дату и время из базы данных и разделить ее - PullRequest
0 голосов
/ 10 июля 2019

Я работаю над программой на C #.Я создал базу данных EF с первым кодом, в которой я читаю в CSV-файле.Этот CSV-файл содержит объект DateTime.Этот DateTime объект был сохранен в базе данных.Теперь я должен получить это DateTime и разобрать его в ДАТУ (дд-мм-гггг) и ВРЕМЯ (чч: мм: сс.ффф).К сожалению, я не знаю, как решить эту проблему.

    private readonly PerformanceAnalyseToolContext db;

    public HomeController(PerformanceAnalyseToolContext db)
    {
       this.db = db;
    }

    public IActionResult ReadCsvData(string csvData) //get csvData String
    {
            ChartData chartData = new ChartData();
            string[] lines = csvData.Split("\n"); //Split after enter

            //List<ChartData> chartDataList = new List<ChartData>();

            foreach (var line in lines)
            {
                string[] values = line.Split(','); // SPlit after ,
                try //try catch, because if an error occurs the process has to continue
                {
                    chartData = new ChartData { //Create object from csv data
                        Timestamp = Convert.ToDateTime(values[0] + "." + values[1]),
                        Function = Convert.ToString(values[2]),
                        Duration = Convert.ToInt32(values[4]),
                        IsError = Convert.ToBoolean(values[5])
                    };

                    db.ChartDatas.Add(chartData); //Save object into database
                    db.SaveChanges();
                }
                catch(Exception exc)
                {
                    exc.ToString();
                }
            }

            return View(chartData);
        }

        public List<ChartDatanDTO> GetDataForChart(string function)
        { //here i get the Data from the DB
            return db.ChartDatas
                .Where(x => x.Function == function)
                .Select(x => new ChartDatanDTO
                {
                    durat = x.Duration,
                    err = x.IsError,
                    time =x.Timestamp
                })
                .ToList();
        }

Ответы [ 3 ]

3 голосов
/ 10 июля 2019

Вы можете указать формат вашего DateTime в методе ToString.

time = x.Timestamp.ToString("dd-MM-yyyy hh:mm:ss.fff")

Если они вам нужны отдельно, вы можете сделать ToString дважды.

date = x.Timestamp.ToString("dd-MM-yyyy")
time = x.Timestamp.ToString("hh:mm:ss.fff")
3 голосов
/ 10 июля 2019

Вы можете использовать DateTime.ParseExact() метод

DateTime dt = DateTime.ParseExact(yourDateTime, "yyyy/MM/DD", CultureInfo.InvariantCulture);

для получения дополнительной информации вы можете проверить:

https://docs.microsoft.com/en-us/dotnet/standard/base-types/parsing-datetime

0 голосов
/ 10 июля 2019

Функция преобразования напрямую не работает в LINQ, Таким образом, вы также можете использовать DBFunctions для усечения времени и SqlFunctions.DatePart для получения времени

           ........

           .Select(x => new ChartDatanDTO
            {
                date = DbFunctions.TruncateTime(x.YourDateTime),
                time = SqlFunctions.DatePart("hh", x.YourDateTime) + ":" + 
                SqlFunctions.DatePart("mm", x.YourDateTime) +":" + 
                SqlFunctions.DatePart("ss", x.YourDateTime)
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...