C#将string的时间转换成时间戳
时间: 2023-10-02 11:06:05 浏览: 455
可以使用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()方法将时间间隔转换为秒数,即得到时间戳。
相关问题
C#string转换为时间戳并计算天数
在C#中,你可以将`string`类型的日期转换成时间戳(Unix时间戳通常是以秒为单位自1970年1月1日以来的总秒数),然后通过减去两个时间戳来计算两个日期之间的天数。以下是基本步骤:
1. 首先,你需要解析`string`为`DateTime`格式。可以使用`DateTime.TryParse`或`DateTime.ParseExact`方法:
```csharp
DateTime dateFromString;
if (DateTime.TryParseExact(dateString, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateFromString))
{
// 成功转换
}
else
{
// 转换失败
}
```
2. 将`DateTime`转换为Unix时间戳(以秒为单位):
```csharp
long timestamp = (long)(dateFromString.ToUniversalTime().Ticks / TimeSpan.TicksPerSecond);
```
3. 计算两个时间点间的天数差,假设你有一个基准的时间戳`baseTimestamp`:
```csharp
int daysDifference = (int)(Math.Abs(timestamp - baseTimestamp) / (60 * 60 * 24));
```
注意:这里假设`baseTimestamp`已经存在,并且也是Unix时间戳(以秒为单位)。如果需要从其他格式(如字符串)获取基准,同样需要先解析。
string转换为时间戳
在C#中,你可以使用`DateTimeOffset`结构或`DateTime`类的`ToUnixTimeSeconds()`方法将字符串转换为时间戳。通常,时间戳是以秒为单位的自1970年1月1日(UTC/GMT)以来的纪元时间。
以下是使用两种方法的例子:
1. **`DateTimeOffset` 类型**
如果你的字符串格式是ISO 8601(如 "yyyy-MM-ddTHH:mm:ss" 或 "yyyy-MM-ddTHH:mm:ss.fffZ"),你可以这样转换:
```csharp
string dateString = "2023-03-20T15:30:00";
DateTimeOffset dateTimeOffset = DateTimeOffset.Parse(dateString);
long timestamp = dateTimeOffset.ToUnixTimeSeconds();
```
2. **`DateTime` 类型(适用于本地时间)**
如果字符串代表的是本地时间,你需要先将其转换为协调世界时(UTC),然后才可用 `ToUnixTimeSeconds()`:
```csharp
string dateStringLocal = "2023-03-20 15:30:00"; // 注意这里没有时区信息
DateTime localDate = DateTime.Parse(dateStringLocal);
DateTime utcDate = localDate.ToUniversalTime();
long timestamp = utcDate.ToUnixTimeSeconds();
```
注意:如果你的时间字符串不遵循标准格式,可能需要额外的日期解析步骤,比如使用`DateTime.TryParse`或`DateTimeOffset.TryParseExact`等方法。
阅读全文