我实际上是在尝试读取 xml 文件。其中一个值有一个后缀,例如“30 天
”。这意味着“30 天”。所以我试图将其转换为 DateTime.Now.AddDays(30)
。要读取 XML 中的这个字段,我决定使用枚举:
enum DurationType { Min = "m", Hours = "h", Days = "d" }
现在我不太确定如何有效地解决这个问题(我对枚举有点傻)。我是否应该先将后缀(在本例中为“d”)从字符串中分离出来,然后尝试使用 switch
语句在 enum
中匹配它?
我想如果您把我的问题简化为:从 30d
到 DateTime.Now.AddDays(30)
的最佳方式是什么?
最佳答案
你可以创建一个 ExtensionMethod 来解析字符串并返回你想要的 DateTime
类似于:
public static DateTime AddDuration(this DateTime datetime, string str)
{
int value = 0;
int mutiplier = str.EndsWith("d") ? 1440 : str.EndsWith("h") ? 60 : 1;
if (int.TryParse(str.TrimEnd(new char[]{'m','h','d'}), out value))
{
return datetime.AddMinutes(value * mutiplier);
}
return datetime;
}
用法:
var date = DateTime.Now.AddDuration("2d");
关于c# - 枚举和字符串匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15079227/