将Linux日期时间转换为Windows本地日期时间格式

时间:2018-06-19 15:04:01

标签: c# linux windows datetime ssh

我有一个ssh Linux机器并在其上运行date命令,并以字符串格式返回Linux机器日期的功能。当我尝试将该字符串转换为日期时间格式时,出现错误:

  

字符串未被识别为有效的DateTime

以下是我的代码:

DateTime appservertime = Convert.ToDateTime(GetLinuxServerTime(kvp.Value));

public string GetLinuxServerTime(string ip)
{
    using (var client = new SshClient(ip.Trim(), UserName, Password))
    {
         string a = "";
         client.Connect();
         SshCommand x = client.RunCommand("date");
         a = x.Result.ToString();
         //a.value= Tue Jun 19 11:54:34 EDT 2018

         client.Disconnect();
         return a;
    }
}

我需要将Linux日期时间转换为本地计算机日期时间格式(不是硬编码格式)。

1 个答案:

答案 0 :(得分:1)

指定date命令的格式:

date +%Y%m%d%H%M%S

并使用与该格式等效的C#将字符串解析回DateTime

DateTime appservertime = DateTime.ParseExact(
    GetLinuxServerTime(kvp.Value), "yyyyMMddHHmmss", CultureInfo.InvariantCulture);

像这样:

DateTime appservertime = DateTime.ParseExact(
    GetLinuxServerTime(kvp.Value), "yyyyMMddHHmmss", CultureInfo.InvariantCulture);

public string GetLinuxServerTime(string ip)
{
    using (var client = new SshClient(ip.Trim(), UserName, Password))
    {
         client.Connect();
         SshCommand x = client.RunCommand("date +%Y%m%d%H%M%S");
         string a = x.Result.ToString();

         client.Disconnect();
         return a;
    }
}