我已经浏览过stackoverflow,甚至看了一些建议的问题,似乎没有人回答,你如何在C#中获得unix时间戳?
我想在我的应用程序中获得有效的时间戳,所以我写道:
public static String GetTimestamp(DateTime value)
{
return value.ToString("yyyyMMddHHmmssffff");
}
// ...later on in the code
String timeStamp = GetTimestamp(new DateTime());
Console.WriteLine(timeStamp);
Run Code Online (Sandbox Code Playgroud)
输出:
000101010000000000
Run Code Online (Sandbox Code Playgroud)
我想要的东西:
20140112180244
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
我正在尝试将C#DateTime变量转换为Unix时间,即自1970年1月1日以来的秒数.看起来DateTime实际上是自0001年1月1日以来的"滴答"数量.
我目前的想法是从我的DateTime中减去1970年1月1日这样:
TimeSpan span= DateTime.Now.Subtract(new DateTime(1970,1,1,0,0,0));
return span.TotalSeconds;
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
我想知道,有没有办法在日期时间在c#中创建时间戳?我需要一个毫秒精度值,它也可以在Compact Framework中工作(说因为CF中不存在DateTime.ToBinary()).
我的问题是我想以数据库无关的方式存储这个值,所以我可以稍后对其进行排序,并找出哪个值来自另一个等等.
c# timestamp compact-framework time-precision database-agnostic
如何将UTC日期传递给Web API?
传递2010-01-01
工作正常,但是当我传递UTC日期(例如2014-12-31T22:00:00.000Z
时间组件)时,我得到HTTP 404响应.所以
http://domain/api/controller/action/2012-12-31T22:00:00.000Z
Run Code Online (Sandbox Code Playgroud)
产生404错误响应,而
http://domain/api/controller/action/2012-12-31
Run Code Online (Sandbox Code Playgroud)
工作良好.
那么如何将UTC日期传递给Web API - 或者至少指定日期和时间?
{
"title":"Mozilla Firefox",
"id":24,
"parent":2,
"dateAdded":1356753810000000,
"lastModified":1356753810000000,
"type":"text/x-moz-place-container",
"children":[]
}
Run Code Online (Sandbox Code Playgroud)
class Bookmark
{
public string title;
public string id;
[JsonProperty(ItemConverterType = typeof(JavaScriptDateTimeConverter))]
public DateTime dateAdded;
[JsonProperty(ItemConverterType = typeof(JavaScriptDateTimeConverter))]
public DateTime lastModified;
public string type;
public string root;
public long parent;
public List<Bookmark> children;
}
private static void Main(string[] args)
{
var json = File.ReadAllText(@"T:/bookmarks-2013-11-13.json");
var bookmarks = JsonConvert.DeserializeObject<Bookmark>(json);
}
Run Code Online (Sandbox Code Playgroud)
我尝试运行时遇到异常,
附加信息:阅读日期时出错.意外的令牌:整数.路径'dateAdded'
我想通过使用JavaScriptDateTimeConverter
,JSON.NET可以弄清楚如何反序列化那些unix时间戳(女士从epoch开始的μs).最简单的方法是什么?
无法在转换器上查找文档......如果有必要,自己编写文档可能不会太难.
编辑:这些实际上是微秒,而不是毫秒.
我试图在unix时间内获得GMT.我使用以下代码:
public static long GetGMTInMS()
{
var unixTime = DateTime.Now.ToUniversalTime() -
new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
return (long)unixTime.TotalMilliseconds;
}
然后将unix时间转换回DatTime对象,我使用:
public static DateTime UnixTimeStampToDateTime(double unixTimeStamp)
{
System.DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0);
dtDateTime = dtDateTime.AddMilliseconds(unixTimeStamp).ToLocalTime();
return dtDateTime;
}
当我运行它时,GetGMTInMS()
1320249196267
.当我把它传给UnixTimeStampToDateTime()
我时{11/2/2011 11:53:16 AM}
哪个好.这是我运行代码时的正确时间.我的问题是,当我试图把1320249196267
为UNIX时间转换器,比如这个,它返回完全错误的时间.
另一个问题是我在东部时区.这返回了我所在时区的时间.这是DateTime
对象处理的东西还是我没有获得GMT.
TimeSpan.FromSeconds
需要一个双倍,并且可以表示低至100纳秒的值,但是这种方法莫名其妙地将时间四舍五入到整个毫秒.
鉴于我只花了半个小时来确定这个(记录在案的!)行为,知道为什么会出现这种情况会更容易忍受浪费的时间.
任何人都可以建议为什么这种看似适得其反的行为被实施了?
TimeSpan.FromSeconds(0.12345678).TotalSeconds
// 0.123
TimeSpan.FromTicks((long)(TimeSpan.TicksPerSecond * 0.12345678)).TotalSeconds
// 0.1234567
Run Code Online (Sandbox Code Playgroud) 我有以下课程:
[DataContractAttribute]
public class TestClass
{
[DataMemberAttribute]
public DateTime MyDateTime { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是JSON:
{ "MyDateTime":"1221818565" }
Run Code Online (Sandbox Code Playgroud)
JSON正在从PHP Web服务返回.
我需要做的是将该epoch字符串转换为有效的C#DateTime.这样做的最佳方法是什么?
我可以做这个:
[IgnoreDataMemberAttribute]
public DateTime MyDateTime { get; set; }
[DataMemberAttribute(Name = "MyDateTime")]
public Int32 MyDateTimeTicks
{
get { return this.MyDateTime.Convert(...); }
set { this.Created = new DateTime(...); }
}
Run Code Online (Sandbox Code Playgroud)
但问题是,MyDateTimeTicks是公共的(将其更改为private会导致序列化过程中出现异常)
如何在C#中创建unix时间戳?(例如2012-10-10 14:00:00 - > 1349877600)