我有一个像这样的字符串“10/13/2009 12:00:00 AM”
如何使用c#
将其转换为YYYYMMDD格式答案 0 :(得分:12)
计算出你想要的两种格式,然后使用:
DateTime dt = DateTime.ParseExact(input, inputFormat,
CultureInfo.InvariantCulture);
string output = dt.ToString(outputFormat, CultureInfo.InvariantCulture);
例如:
using System;
using System.Globalization;
class Test
{
static void Main(string[] args)
{
string input = "10/13/2009 12:00:00 AM";
string inputFormat = "MM/dd/yyyy HH:mm:ss tt";
string outputFormat = "yyyyMMdd";
DateTime dt = DateTime.ParseExact(input, inputFormat,
CultureInfo.InvariantCulture);
string output = dt.ToString(outputFormat, CultureInfo.InvariantCulture);
Console.WriteLine(output);
}
}
答案 1 :(得分:2)
如果您的字符串是.Net可以理解的有效日期时间格式,您只需要:
DateTime.Parse(yourString).ToString("yyyyMMdd")
编辑:.Net没有明确的格式规范可以理解许多合理的日期时间格式,但如果您的特定格式不是,那么您将需要使用显式格式说明符。
DateTime.ParseExact(yourString, format,
CultureInfo.InvariantCulture)).ToString("yyyyMMdd")
答案 2 :(得分:0)
string s = String.Format("{0:yyyyMMdd}", Convert.ToDateTime("10/13/2009 12:00:00 AM"));
答案 3 :(得分:0)
这些都是非常好的解决方案,但如果你传递的内容与模式不符,他们就会抛出异常。我喜欢自己使用CSLA的SmartDate类http://www.lhotka.net/cslanet/download.aspx。它很好地处理了空值和无效值。 TryStringToDate函数是魔术发生的地方:
private static bool TryStringToDate( string value, EmptyValue emptyValue, ref DateTime result )
{
DateTime tmp;
if( String.IsNullOrEmpty( value ) )
{
if( emptyValue == EmptyValue.MinDate )
{
result = DateTime.MinValue;
return true;
}
result = DateTime.MaxValue;
return true;
}
if( DateTime.TryParse( value, out tmp ) )
{
result = tmp;
return true;
}
string ldate = value.Trim().ToLower();
if( ldate == "SmartDateT" ||
ldate == "SmartDateToday" ||
ldate == "." )
{
result = DateTime.Now;
return true;
}
if( ldate == "SmartDateY" ||
ldate == "SmartDateYesterday" ||
ldate == "-" )
{
result = DateTime.Now.AddDays( -1 );
return true;
}
if( ldate == "SmartDateTom" ||
ldate == "SmartDateTomorrow" ||
ldate == "+" )
{
result = DateTime.Now.AddDays( 1 );
return true;
}
return false;
}
所以你应该最终结束这样的事情:
SmartDate dt = new SmartDate(input);
dt.FormatString = outputFormat;
string output = dt.Text;
Console.WriteLine(output);
答案 4 :(得分:0)
您可以尝试这样的事情:
string myDate = "10/13/2009 12:00:00 AM";
DateTime result = new DateTime(DateTime.Now.Year, 1, 1);
DateTime.TryParse(myDate, out result);
string output = result.ToString("yyyyMMdd");