C#如何将datetime转换成时间戳
时间: 2023-10-18 18:11:45 浏览: 253
在C#中将DateTime转换为时间戳,可以使用以下代码实现:
```csharp
DateTime dt = DateTime.Now;
long timeStamp = (long)(dt - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds;
```
其中,`dt`是要转换的DateTime对象,`timeStamp`是转换后的时间戳。代码中的1970年1月1日是Unix时间戳的起始时间,将`dt`减去起始时间并计算总秒数即可得到时间戳。需要注意的是,由于时间戳是以秒为单位的,因此需要将计算结果转换为long类型。
相关问题
C# datetime 转10位时间戳
在C#中,如果你有一个`DateTime`类型的值,想要将其转换为10位时间戳(通常是指Unix时间戳,即自1970年1月1日 00:00:00 UTC以来的秒数),你可以使用`DateTimeOffset.UtcNow.Ticks`属性,因为`Ticks`返回的是自“1601年1月1日 0:0:0 Coordinated Universal Time (UTC)”起的100纳秒(10位精度不够,但这是最接近的做法)。这里是一个简单的示例:
```csharp
public static long DateTimeTo10BitTimestamp(DateTime dateTime)
{
// 获取到从1601年1月1日起的ticks,然后除以1e7(转换为毫秒)
return DateTimeOffset.UtcNow.Date.AddDays(dateTime.Date.AddDays(-new DateTime(1601, 1, 1).Date).TotalDays).Ticks / 10000000;
}
```
注意这个方法得到的是一个整数秒的表示,对于微秒级别的精确度并不适合。如果需要更精确的时间戳,可能会需要第三方库或者自行调整。
C#将string的时间转换成时间戳
可以使用C#中的DateTime和TimeSpan类将字符串时间转换为时间戳。具体操作如下:
```csharp
//将字符串时间转换为DateTime对象
DateTime dt = DateTime.Parse("2021-07-20 15:30:00");
//获取1970-01-01到现在的时间间隔
TimeSpan ts = dt - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
//获取时间戳
long timestamp = Convert.ToInt64(ts.TotalSeconds);
```
其中,DateTime.Parse()方法将字符串时间转换为DateTime对象,TimeSpan类用于计算时间间隔,new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc)是Unix时间戳的起点,即1970年1月1日0时0分0秒。最后使用Convert.ToInt64()方法将时间间隔转换为秒数,即得到时间戳。
阅读全文