在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
这不是我需要的。
答案 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);