我有一个C#方法的日期/时间返回是字符串,
string dateTime = "2018-6-18 20:50:35"
现在我想将其转换为另一个字符串表示形式,如
string convertDT = "2018-6-18 08:50:35 PM"
这可能吗?
好像我可以做点什么,
var formattedTime = dateTime.ToString("h:mm tt", CultureInfo.InvariantCulture);
但没有工作。建议请!
答案 0 :(得分:1)
不添加任何验证,
var string24h = "2018-6-18 20:50:35";
var dateTime = DateTime.Parse(string24h);
var formattedTime = dateTime.ToString("h:mm tt", CultureInfo.InvariantCulture);
答案 1 :(得分:1)
使用DateTime.ParseExact然后ToString
答案 2 :(得分:1)
只需将字符串解析为新的DateTime对象,然后使用正确的格式调用ToString()
:
string dateTime = "2018-6-18 20:50:35";
DateTime parsedDateTime;
if(DateTime.TryParse(dateTime, out parsedDateTime))
{
return parsedDateTime.ToString("yyyy-M-d hh:mm tt");
}
我的答案的好处是它包含验证(DateTime.TryParse()
),它会产生一些额外的代码行,但您现在可以接受所有输入而不用担心抛出异常。
更好的做法是将此逻辑重构为您可以重复使用的方法:
public static bool TryChangeDateTimeFormat(string inputDateString, string outputFormat, out string outputDateString)
{
DateTime parsedDateTime;
if(DateTime.TryParse(inputDateString, out parsedDateTime))
{
outputDateString = parsedDateTime.ToString(outputFormat);
return true;
}
outputDateString = string.Empty;
return false;
}
这将返回一个关于转换是否成功的bool,并且将根据结果修改out
变量。
小提琴here
答案 3 :(得分:1)
当然,您可以使用DateTime
类来解析原始字符串,然后在同一日期输出格式不同的字符串:
string result = DateTime.Parse(dateTime).ToString("h:mm tt", CultureInfo.InvariantCulture);
答案 4 :(得分:1)
var dateTime = "2018-6-18 20:50:35";
var dt = Convert.ToDateTime(dateTime);
var amPmDateTime = dt.ToString(@"yyyy-MM-dd hh:mm:ss tt", CultureInfo.InvariantCulture);
答案 5 :(得分:1)
为了准确提供您使用的格式
string convertDT = DateTime.Parse(dateTime).ToString("yyyy-MM-dd hh:mm:ss tt");
您可以根据需要更改引号之间的格式。例如yyyy / MM / dd等。记住MM是几个月的2个点,mm是2个点的分钟。
所以,如果你把
string convertDT = DateTime.Parse(dateTime).ToString("yyyy-mm-dd hh:mm:ss tt");
你将获得年 - 分 - 天。