更改时间并转换为datetime

本文关键字:datetime 转换 时间 | 更新日期: 2023-09-27 18:06:24

我必须从perforce中选择changelists问题是当我提取信息时,但问题是日期和时间看起来没有意义,所以我如何将此字符串更改为有意义的日期和时间

结果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 ('@');       
     }
} 

更改时间并转换为datetime

如果值1361898522意味着Tue, 26 Feb 2013 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,以便epoch是适当的UTC而不是系统本地时区。

使用我的Noda Time项目就更容易了,从1.1版开始:

Instant timestamp = Instant.FromSecondsSinceUnixEpoch(seconds);

我怀疑日期时间值是用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