如何才能从字符串中获取日期和时间?

时间:2013-09-20 22:24:52

标签: c# winforms

在Form1中我有:

satelliteMapToRead = File.ReadAllText(localFilename + "satelliteMap.txt");

然后在构造函数中:

ExtractImages.ExtractDateTime("image2.ashx?region=eu&time=", "&ir=true", satelliteMapToRead);

然后在ExtractImages类中我有:

public static void ExtractDateTime(string firstTag, string lastTag, string f)
{
    int index = 0;
    int t = f.IndexOf(firstTag, index);
    int g = f.IndexOf(lastTag, index);
    string a = f.Substring(t, g - t);
}

这是文本文件中字符串的示例:

  

image2.ashx区域= EU&安培;时间= 201309202145&安培; IR =真

从这个字符串我想要变量g只包含:201309202145 然后将变量a转换为日期时间:date 2013 09 20 - time 21 45

我现在得到的变量是:

  

image2.ashx区域= EU&安培;时间= 201309202215

这不是我需要的。

4 个答案:

答案 0 :(得分:2)

您没有考虑firstTag

的长度
int t = f.IndexOf(firstTag, index) + firstTag.Length;

答案 1 :(得分:0)

由于您已经这样做了,juts再次使用indexOf("time=")来获取201309202215。然后日期/时间由

给出
DateTime.ParseExact(str, "yyyyMMddhhmmss", CultureInfo.InvariantCulture);

答案 2 :(得分:0)

将此行切换为:

int t = f.IndexOf(firstTag, index) + firstTag.Length;

IndexOf返回字符串第一个字符的位置。所以在你的例子中,t实际上是零。这就是a也有第一个标记的原因。

答案 3 :(得分:0)

没有错误处理(缺少参数或格式无效):

string url = "image2.ashx?region=eu&time=201309202145&ir=true";
var queryString = System.Web.HttpUtility.ParseQueryString(url);
DateTime dt = DateTime.ParseExact(queryString["time"], "yyyyMMddHHmm", CultureInfo.InvariantCulture);