【问题标题】:Convert a string containing monthName to Int of MonthDigit将包含 monthName 的字符串转换为 MonthDigit 的 Int
【发布时间】:2013-10-07 08:36:36
【问题描述】:

我有一个字符串,其中包含短月份名称。\

string month = "Jun";

我需要从这个月份的名称中获取月份的数字。

说我这样做:

int monthInDigit = getMonth(month);

monthInDigit <-- 6

我怎样才能做到这一点。如果您不能得到我的问题,请发表评论,我会适当地解释它。

提前感谢

【问题讨论】:

标签: c# string datetime


【解决方案1】:
int monthInDigit = DateTime.ParseExact(month, "MMM", CultureInfo.InvariantCulture).Month;

【讨论】:

  • 为什么最后一个参数是null
  • @ArsenMkrt:这不是真的。 DateTime.ParseExact 是否有效取决于 OP 当前的文化。如果您将null 作为第三个参数传递,则使用CultureInfo.CurrentCulture。这就是我在回答中使用CultureInfo.InvariantCulture 的原因。并非每种语言都将 June 缩写为 Jun
  • @TimSchmelter Thanxxx 获取额外信息并更正空参数信息。
【解决方案2】:

你可以先解析成DateTime

DateTime dt = DateTime.ParseExact("Jun", "MMM", CultureInfo.InvariantCulture);
int month = dt.Month;
if(month < 6)
{  
    // do something...
}

【讨论】:

  • 你又来了..wooow太棒了:))
  • 感谢您的解决方案
  • @MurtazaMunshi:如果您希望它适用于任何文化,请使用CultureInfo.InvariantCulture 而不是null
  • 如果是六月或九月呢? MMM 应该用什么替换?谢谢。
  • @Si8: 如果不是缩写月份名称而是全名使用MMMM
【解决方案3】:

另一种方式:

string [] arr= {jun, fab,...}; 

public int getMonth(string month){

for(int i = 0 ; i< arr.length ; i++){
   if(string[i].Contains(month) || month.Contains(arr[i]))
   return i+1;
   }

return -1;// if month is invalid , return -1
}

【讨论】:

  • 这家伙完全没效率。
猜你喜欢
  • 2012-11-20
  • 2012-05-28
  • 2021-10-24
  • 1970-01-01
  • 2014-12-25
  • 2021-12-03
  • 1970-01-01
  • 2019-09-19
  • 2021-07-16
相关资源
最近更新 更多