我试图获取远程系统时间(基于another post),并最终与本地系统时间设置为相同的远程系统时间。但我“想要做的值的一些显示和数据的时间值的差异(本地VS远程的)。但是,当我尝试做远程系统输出我得到一个错误的日期格式ParseExact
这不是一个有效的日期时间。现在虽然我试图做到这一点在C#中,我很开放的另一种语言,我可以使用VS 2010获取并解析远程日期时间价值
这里写的是我使用至今的代码。
private void GetTime_Click(object sender, EventArgs e)
{
var st = DateTime.Now.ToString("ddd MMM dd hh:mm:ss yyy");
System.Net.Sockets.TcpClient t = new System.Net.Sockets.TcpClient("10.10.10.10", 13);
System.IO.StreamReader rd = new System.IO.StreamReader(t.GetStream());
var rt = rd.ReadLine();
DateTime startTime = ParseDateTime(st) ?? DateTime.Now;
DateTime endTime = ParseDateTime(rt) ?? DateTime.Now;
TimeSpan span = endTime.Subtract(startTime);
var ts = span.Seconds;
remoteTime.Text = rt;
systemTime.Text = st;
timeDiff.Text = ts.ToString();
rd.Close();
t.Close();
}
public static DateTime? ParseDateTime(string value)
{
CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");
DateTimeStyles styles = DateTimeStyles.None;
return DateTime.ParseExact(value, "ddd MMM dd hh:mm:ss yyy", culture, styles);
}
虽然这确实工作之类的,这个问题是远程时间被读为周三11月17日10:29:00 2010'或者我有多么格式说'DDD MMM DD HH:MM:SS YYY '。所以,当它尝试'TryParse'失败并跳过它。 – 2010-11-17 15:30:37
即使通过ToString格式也有3年转换为4位数字。 yyy'的'如何输出为4位必须 – skyfoot 2010-11-17 17:24:16
奇怪,我完全匹配的值传递,但解析它,你必须通过'yyyy'。从来没有,你知道了。 – 2010-11-17 18:01:33