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