我在表格中有一个varchar(5)
列,其中包含24小时格式时间的小时和分钟。我想将这个24小时格式转换为12小时格式,最后将这个12小时格式时间与Date值一起嵌入到DateTime变量中。以下是演示示例。
例如
8:18应该转换为8:18:00 AM然后应该嵌入 与日期如8/10/2012 8:18:50 AM一样能够存储在DateTime中 DB专栏。
22:20......10:20:00 PM.......8/10/2012 10:20:00 PM
日期不是当前日期,可以是任何日期值,例如8/8/2012或7/8/2012
答案 0 :(得分:10)
您可以这样做:
string input = "22:45";
var timeFromInput = DateTime.ParseExact(input, "H:m", null, DateTimeStyles.None);
string timeIn12HourFormatForDisplay = timeFromInput.ToString(
"hh:mm:ss tt",
CultureInfo.InvariantCulture);
var timeInTodayDate = DateTime.Today.Add(timeFromInput.TimeOfDay);
现在需要考虑的重要部分:
"H:m"
,因此假设24H值不使用零来为小时或分钟的单个数字前缀; "hh:mm:ss tt"
,因为它似乎是您想要的格式,但是您需要使用CultureInfo.InvariantCulture
来确定您获得的AM / PM指示符实际上是AM或下午。如果您使用其他文化,AM / PM指示符可能会更改; DateTime.Today
构建的,它以零时间返回今天的日期,然后我们只添加我们从输入中读取的时间。要从其他日期创建最终日期和时间,您可以改为使用:
var timeInAnotherDate = new DateTime(2000, 1, 1).Add(timeFromInput.TimeOfDay);
参考资料:
答案 1 :(得分:1)
create function dbo.COMBINE_DATE_TIME(
@DatePart DateTime, -- DateTime
@TimePart varchar(5)) -- Time
returns DateTime
as begin
return DATEADD(day, DATEDIFF(day,0,@DatePart),
CONVERT(DateTime,ISNULL(@TimePart,''),14))
end
go
答案 2 :(得分:0)
string strDate = DateTime.ParseExact("8:18","HHmm",CultureInfo.CurrentCulture).ToString("hh:mm tt");
答案 3 :(得分:0)
string fromTime = Convert.ToStr(reader["TimeFrom"]);
string toTime = Convert.ToStr(reader["TimeTo"]);
item.Time=DateTime.Parse(fromTime,CultureInfo.CurrentCulture).ToString("hh:mm tt");
模型的属性(此处为item.Time)应为字符串。