更改时间并转换为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 ('@');
}
}
如果值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