Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从数据库获取datetime并将其拆分_C#_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# 从数据库获取datetime并将其拆分

C# 从数据库获取datetime并将其拆分,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我正在做一个C程序。我创建了一个EF代码第一数据库,在其中我读取了一个csv文件。此csv文件包含DateTime对象。此DateTime对象保存在数据库中。现在我必须得到这个DateTime并将其解析为dd-mm-yyy和时间hh:mm:ss.fff。不幸的是,我不知道如何解决这个问题 private readonly PerformanceAnalyseToolContext db; public HomeController(PerformanceAnalyseToolC

我正在做一个C程序。我创建了一个EF代码第一数据库,在其中我读取了一个csv文件。此csv文件包含DateTime对象。此DateTime对象保存在数据库中。现在我必须得到这个DateTime并将其解析为dd-mm-yyy和时间hh:mm:ss.fff。不幸的是,我不知道如何解决这个问题

    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();
        }
您可以使用DateTime.ParseExact方法

DateTime dt=DateTime.ParseExactyourDateTime,yyyy/MM/DD,CultureInfo.InvariantCulture

有关更多信息,您可以查看:


您可以在ToString方法中指定DateTime的格式

time = x.Timestamp.ToString("dd-MM-yyyy hh:mm:ss.fff")
如果你需要把它们分开,你可以做两次

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

直接转换函数在LINQ中不起作用, 因此,您还可以使用来截断时间并获得时间

           ........

           .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)
            });

你应该考虑使用这两个答案,因为它们都是针对不同任务的有效信息。而不是使用此Convert.ToDateTimevalues[0]+.+价值观[1];你应该考虑使用AlGaNV的答案,因为它将有利于文化独立-你的当前代码将打破与不同的文化。ckal的答案应该用于将DateTime拆分为日期和时间的字符串表示形式。因此,一个答案可以从CSV文件中读取,另一个答案可以写入CSV文件。谢谢