C# 在epplus中转换日期时间格式

C# 在epplus中转换日期时间格式,c#,epplus,C#,Epplus,我想使用epplus将excel中的一列读取到datatable中,但无论何时,我都会以24小时格式获取时间。我希望时间是12小时格式,因为它是在excel中 我曾尝试将excel的日期格式更改为“dd/mm/yyyy hh:mm:ss tt”,它给我AM/PM,但它以24小时格式显示时间 worksheet.Cells["" + firstRowCell.Address + ":" + Regex.Replace(firstRowCell.Address, "[0-9]", "") + ""

我想使用epplus将excel中的一列读取到datatable中,但无论何时,我都会以24小时格式获取时间。我希望时间是12小时格式,因为它是在excel中

我曾尝试将excel的日期格式更改为“dd/mm/yyyy hh:mm:ss tt”,它给我AM/PM,但它以24小时格式显示时间

worksheet.Cells["" + firstRowCell.Address + ":" + 
Regex.Replace(firstRowCell.Address, "[0-9]", "") + "" + 
worksheet.Dimension.Rows].Style.Numberformat.Format =  "dd/mm/yyyy hh:mm:ss tt";

听起来您正在读取格式化的显示值,而不是基础单元格值。也许这会对您有所帮助我不确定Excel是否会将日期和时间保存为1900-01-01的天数的两倍小数部分是如何确定一天中的小时数的。这个数字也可以是负数或正数,所以我过去为了得到正确的值所做的就是读取单元格值并将其转换为日期时间

//获取基础值而不是显示值
var cellValue=工作表.Cells[“”+firstRowCell.Address+”:“+
Regex.Replace(firstRowCell.Address,“[0-9]”,“)+”+
工作表.Dimension.Rows].值;
var stringValue=$“{cellValue}”;
//现在将double转换为有效的DateTime;
日期时间值;
var date=新的日期时间(1899,12,30);
双重价值;
if(double.TryParse(stringValue,out doubleValue)&&
(双值=-693593))
值=date.AddDays(doubleValue);
一旦你有了一个有效的DateTime值,你就可以使用ToString来获得一个正确的12小时格式

value.ToString(“dd/mm/yyyy hh:mm:ss tt”)

听起来您是在读取格式化显示值,而不是底层单元格值。也许这会对您有所帮助我不确定Excel是否会将日期和时间保存为1900-01-01的天数的两倍小数部分是如何确定一天中的小时数的。这个数字也可以是负数或正数,所以我过去为了得到正确的值所做的就是读取单元格值并将其转换为日期时间

//获取基础值而不是显示值
var cellValue=工作表.Cells[“”+firstRowCell.Address+”:“+
Regex.Replace(firstRowCell.Address,“[0-9]”,“)+”+
工作表.Dimension.Rows].值;
var stringValue=$“{cellValue}”;
//现在将double转换为有效的DateTime;
日期时间值;
var date=新的日期时间(1899,12,30);
双重价值;
if(double.TryParse(stringValue,out doubleValue)&&
(双值=-693593))
值=date.AddDays(doubleValue);
一旦你有了一个有效的DateTime值,你就可以使用ToString来获得一个正确的12小时格式

value.ToString(“dd/mm/yyyy hh:mm:ss tt”)

您不希望大写字母HH与HH:mm:ss对应吗?因此HH:mm:ssi在这两种情况下,无论是HH还是HH,它都显示24小时的时间。通过“我以24小时格式获取时间”,您的意思是您在将时间存储在数据库中后从数据库中获取它吗?如果是这样,这不是EPPlus问题,而是数据库问题。不,我从excel中读取数据,然后存储到DataTable中,excel中的时间跨度为12小时,但当我将其读取到DataTable中时,它只拾取am或PM,而不是整个时间,然后,我尝试更改excel数字格式,通过上面的格式显示AM/PM,但时间是24小时格式,我希望它是12小时格式。您想从excel文件中读取并在数据库中以字符串形式保存为12小时格式,还是想从数据库中获取值并在excel中以12小时格式显示。更改样式格式不会更改基础值您不希望大写字母HH与HH:mm:ss相对应,因此HH:mm:ssi在HH或HH两种情况下,它都显示24小时时间。通过“我以24小时格式获取时间”,您的意思是在将时间存储在数据库中后从数据库中获取它吗?如果是这样,这不是EPPlus问题,而是数据库问题。不,我从excel中读取数据,然后存储到DataTable中,excel中的时间跨度为12小时,但当我将其读取到DataTable中时,它只拾取am或PM,而不是整个时间,然后,我尝试更改excel数字格式,通过上面的格式显示AM/PM,但时间是24小时格式,我希望它是12小时格式。您想从excel文件中读取并在数据库中以字符串形式保存为12小时格式,还是想从数据库中获取值并在excel中以12小时格式显示。更改样式格式不会更改基础值