我正在尝试将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)
有没有更好的办法?
我创建了一个API端点.调用者可以使用POST
传递相关参数的方法调用API .在参数中有一个datetime
格式参数.
问题是,在调用此API时,调用者可以传递datetime
3种不同的格式:
long int
- 例如1374755180string
)string
)我必须解析该datetime
值并将其转换为DateTime
或string
以时间戳格式.
我已经尝试使用DateTime.TryParse()
,DateTime.Parse()
,Convert.ToDateTime()
和Convert.ToDouble()
,但他们都不在肯定为我工作.
所需的输出必须采用en-GB
格式.
我原本以为有一个if-else if-else
块可以使用TryParse
3次,其中一个else
说无法解析字符串.这是最好的解决方案吗?或者有更好的解决方案吗?
请帮忙!
在Xamarin.Android中,您使用.NET和Java.
我得到Java.Util.Date的返回值,然后我需要输入相同的值作为只需要System.DateTime的参数
这就是我目前的做法
public static DateTime ConvertJavaDateToDateTime(Date date)
{
var a = date.ToGMTString();
var b = date.ToLocaleString();
var c = date.ToString();
DateTime datetime = DateTime.ParseExact(date.ToGMTString(), "dd MMM yyyy HH:mm:ss 'GMT'", CultureInfo.InvariantCulture);
return datetime;
}
Run Code Online (Sandbox Code Playgroud)
但是在任何一个月的前9天,我只获得当天的1位数,而DateTime.ParseExact函数正在寻找dd(即当天的2位数).
a是一个值为"1 Sep 2014 14:32:25 GMT"的字符串
b是一个值为"2014年9月1日16:32:25"的字符串
c是一个值为"Mon Sep 01 16:32:25 EET 2014"的字符串
我希望我能为这个问题找到一个简单,快速,可靠和一致的解决方案:D
这个问题不是重复,这个问题演示了转换方法的问题,而不是如何执行转换.完整阅读问题.
我有一个时间戳,我相信是一个unix时间戳,当使用以下转换器时,它正确转换印章
价值:1365151714493
http://www.epochconverter.com/
我环顾四周,发现了一个例子就如何将其转换为datetime obect和方法看似简单,创建一个DateTime对象,并设置日期威力晚上1/1/1970,并添加值作为第二:
public static DateTime? ConvertUnixTimeStamp(string unixTimeStamp)
{
return new DateTime(1970, 1, 1, 0, 0).AddSeconds(Convert.ToDouble(unixTimeStamp));
}
Run Code Online (Sandbox Code Playgroud)
问题是每当我用上面的值调用这个mehod我得到一个超出范围异常的值.
我是否需要先对价值做任何事情?字符串转换为双ok.调用时抛出异常AddSeconds(double)
methos
我尝试将其转换为字节数组,但最小字节数组为5.但是我只有4个字节用于此日期时间,以字节形式存储在我的字节数组中.
代码是这样的:
byte[] b = new byte[] {10,12,12,12};
DATETIME t=datetime.now();
array.copy(BitConverter.GetBytes(t.ticks),1,b,4);
Run Code Online (Sandbox Code Playgroud)
但是getbytes(t.ticks)返回8个字节的数组.我不知何故希望它只转换为4个字节.
我试图 在DateTime中转换此unix时间戳 1415115303410,这样:
private static DateTime UnixTimeStampToDateTime(long unixTimeStamp)
{
System.DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc);
dtDateTime = dtDateTime.AddMilliseconds(unixTimeStamp);
return dtDateTime;
}
Run Code Online (Sandbox Code Playgroud)
但是我的日期错了: 日期:{04/11/0045 00:00:00}
注意:dtDateTime.AddSeconds(unixTimeStamp)抛出异常..我的数字以毫秒为单位.
使用此在线转换工具http://www.epochconverter.com/我得到了正确的转换:
04/11/2014 15:35:03 GMT + 0:00
我怎么能改变这个呢?
我有javascript日期对象,它以这种格式给我一个日期字符串,"Tue Sep 04 2012B0100(GMT Daylight Time)"
我试图用这里提到的ParseEaxcat进行解析,但它抛出一个无效的日期异常 - 任何人指出我正确的格式的方向
string date = "Tue Sep 04 2012B0100 (GMT Daylight Time)";
dt = DateTime.ParseExact(date,"ddd MMM dd yyyyBzzzz",
CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
我也很满意地看着这个:http: //msdn.microsoft.com/en-us/library/8kb3ddd4.aspx
我有一个整数15791
表示自纪元以来的天数和等于27.03.2013,如何在C#中进行转换?
public void method1()
{
...
int days_since_epoch = 15791;
// how convert `days_since_epoch` to "27.03.2013"
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
我试图找出一种方法来获取地址的当前时间,甚至只是一个州或邮政编码。
即,如果这里是中午 12:00(明尼苏达州),亚利桑那州凤凰城是几点?
理想情况下,它会考虑夏令时。
我想在不依赖外部网络服务的情况下做到这一点。
这是我从JSON获得的日期:
"created_time": "1383734307"
Run Code Online (Sandbox Code Playgroud)
所以我的代码是:
var myData = DateTime.ParseExact((string)item.created_time, "ddd MMM dd HH:mm:ss zzzz yyyy", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
但我明白了 String was not recognized as a valid DateTime.
我有一个简单的 DateTime 对象,等于 date: 11/1/2020 8:11:14 AM
。
我想将它转换成毫秒,所以我做的:
myTimestamp?.Ticks / TimeSpan.TicksPerMillisecond
。
我得到63739786274788
,从纯计算的角度来看,这似乎是正确的。
但是,当我将它输入到其中一个在线转换器进行验证时,我得到了 date Wed Nov 01 3989 01:11:14
,这当然是很遥远的。
问题:
63739786274788
如果不是以毫秒为单位的时间,这个数字是多少?