C#中字符串到mmm-yy的格式

时间:2009-04-07 12:39:08

标签: c# datetime

我需要使用C#在ASP.net中执行一些日期操作。

  1. 我输入的日期应为格式'Jul-05'(mmm-yy格式和类型 - 字符串)... 我怎么能检查这个???? 或者我如何用任何用户输入字符串来验证这一点???

  2. 验证完毕后,我需要将其与数据库中的值进行比较(比如列名 buy_period ,其值为(例如)04/31/2007)。

  3. 如何编写查询以进行比较? (因为两个日期的格式不同)

    你可以帮助我吗?

6 个答案:

答案 0 :(得分:5)

  DateTime myDateTime = DateTime.ParseExact( input, "MMM-yy" );

然后,您可以愉快地将它作为参数传递给存储过程(等),以便在服务器上进行比较(或者只使用作为现有查询结果返回的DateTime)

答案 1 :(得分:2)

.NET框架在DateTime struct :: Parse,TryParse,ParseExact,TryParseExact上有一些不错的方法。

此信息为discussed on MSDN

因为你提供了一个自定义日期字符串,我们应该使用ParseExact或TryParseExact。如果解析失败,后者不会抛出异常。

所以..试试吧......

using System.Globalization;

CultureInfo MyCultureInfo = new CultureInfo("en-US");
string myString = "Jul-05";
DateTime myDateTime = DateTime.ParseExact(myString, "MMM-yy", MyCultureInfo))
Console.WriteLine();

然后可以将myDateTime值作为DateTime属性传递给数据库,并对其进行检查。

编辑:该死的,被罗兰击败了一分钟,就像我打字一样!

编辑2:请注意“MMM-yy”。如MSDN page所述,MMM是“表示当前System.Globalization.DateTimeFormatInfo.AbbreviatedMonthNames属性中定义的月份的缩写名称。” mmm(小写)无效。

答案 2 :(得分:2)

使用TryParseExact方法验证字符串并将其解析为DateTime值:

DateTime month;
if (DateTime.TryParseExact("MMM-yy", CultureInfo.InvariantCulture, DateTimeStyles.None, out month)) {
   // parsing was successful
}

DateTime值将使用月份的第一天和0:00的时间来填充完整的值,因此像"jul-05"这样的字符串将被解析为完整的DateTime价值如2005-07-01 00:00:00.0000,因此它将成为该月的起点。

要将此与数据库中的日期进行比较,您还需要下个月的起点,您可以使用:

DateTime nextMonth = month.AddMonths(1);

现在,您可以通过以下方式将日期与月份的起点和终点进行比较:

where date >= @Month and date < @NextMonth

答案 3 :(得分:0)

1:read this

2:列是日期时间还是varchar?

答案 4 :(得分:0)

你的验证和比较必须是两种不同的操作。所以你可以做很多事情进行验证。

验证选项:

1。)将字符串拆分为“ - ”并检查mmm部分是否在您的月份列表中,然后检查该数字是否有效。

2。)正则表达式,这是先进的,但可以减少到一行。如果您有兴趣,请查看RegEx。

验证字符串后,将其转换为DateTime对象,并使用DateTime.Compare()将其与其他值进行比较。

希望有所帮助。

答案 5 :(得分:0)

您可以使用

DateTime date = DateTime.ParseExact(value, "MMM-yy", null); //checked at http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

然后在sql命令参数中使用该日期。