1

我必须changelists从 perforce 中进行选择,问题是当我提取信息时,但问题是日期和时间看起来并不重要,所以我怎样才能将此字符串更改为有意义的日期和时间

结果示例 1361898522

编码:

P4Command cm1 = new P4Command(ps, "changes", true, String.Format("{0}", deppath1));
Options opchanges = new Options();
opchanges.Add(op1,op2);
P4CommandResult results1 = cm1.Run(opchanges);
TaggedObjectList listfiledown1 = new TaggedObjectList();
listfiledown1 = (results1.TaggedOutput);

foreach (TaggedObject obj in listfiledown1)
{      
     foreach (String s in obj.Keys)
     {
         String value = "n/a";
         obj.TryGetValue(s, out value);
         var changeList = value.Split ('@');       
     }
} 
4

2 回答 2

2

如果值 1361898522 是 2013 年 2 月 26 日星期二 17:08:42 UTC,那么看起来这是一个 Unix 时间戳 - 自 Unix 纪元以来的秒数。这在 C# 中很容易做到:

private static readonly DateTime UnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0,
                                                          DateTimeKind.Utc);

...

public static DateTime FromUnixTimestamp(long seconds)
{
    return UnixEpoch + TimeSpan.FromSeconds(seconds);
}

请注意 UTC DateTimeKind,以便时代是适当的 UTC,而不是系统本地时区。

Using my Noda Time project it's even easier, as of version 1.1:

Instant timestamp = Instant.FromSecondsSinceUnixEpoch(seconds);
于 2013-03-29T14:10:08.773 回答
1

我怀疑日期时间值以 Unix 时间表示:自 1970 年 1 月 1 日以来的秒数。

例如,如果你写:

        var epoc = new DateTime(1970, 01, 01);
        dt = epoc + TimeSpan.FromSeconds(1361898522);
        Console.WriteLine(dt);

结果是:

2013/02/26 17:08:42
于 2013-03-29T14:10:07.050 回答