C# 在C中,将字符串的一部分转换为datetime#
我在asp.net核心项目的appsettings.json中定义了两个参数C# 在C中,将字符串的一部分转换为datetime#,c#,C#,我在asp.net核心项目的appsettings.json中定义了两个参数 "TimeParam": { "StartTime": "00:00:00.0001", "EndTime": "23:59:99.999" "BackOffDay": 1 }, 在函数中,我需要传递两个参数,即数据类型date的startDate和endDate 例如,对于起始日期,我需要类似于17/06/2020 00:00:00.0001,结束日期类似于17/06/2020 23
"TimeParam": {
"StartTime": "00:00:00.0001",
"EndTime": "23:59:99.999"
"BackOffDay": 1
},
在函数中,我需要传递两个参数,即数据类型date的startDate和endDate
例如,对于起始日期,我需要类似于17/06/2020 00:00:00.0001
,结束日期类似于17/06/2020 23:59:99.999
考虑到我在appsettings.json中设置的时间,如何按如下方式设置这两个变量
StartDate: DateTime.Now.AddDays(BackOffDay) EndDate: DateTime.Now
使用,然后添加开始和结束时间,分别创建开始日期和结束日期。用于解析时间
(DateTime.Now.Date + TimeSpan.Parse("13:01:05")).ToString();
//2020-06-18 13:01:05
你骗了我一秒钟,
23:59:99.999
不是可解析的时间,因为一分钟只有59秒
但你看:
using System;
using System.Globalization;
public class Program
{
public static void Main()
{
var start= "00:00:00.0001";
var end = "23:59:59.999";
int backOffDay = 1;
var startTimeSpan = TimeSpan.Parse(start);
var endTimeSpan = TimeSpan.Parse(end);
var startTime = DateTime.Now.Date.AddDays(backOffDay).Add(startTimeSpan);
var endTime = DateTime.Now.Date.AddDays(backOffDay).Add(endTimeSpan);
Console.WriteLine(startTime.ToString("dd/MM/yyyy H:mm:ss.FFFF"));
Console.WriteLine(endTime.ToString("dd/MM/yyyy H:mm:ss.FFFF"));
}
}
你可以用它来测试
2020年6月19日0:00:00.0001
2020年6月19日23:59:59.999
注意:为了确保所有时间戳的解析始终相同,您可能还需要执行以下操作:
CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("en-US");
或者只打一个电话:
var culture = new CultureInfo("en-US");
var startTimeSpan = TimeSpan.Parse(start, culture);
虽然解析似乎在en-US文化中工作得很好,但我不能保证它在所有环境中都能工作。
var startDate=DateTime.Parse($“{DateTime.Now.AddDays(BackOffDay):dd/MM/yyyy}{StartTime}”)
和类似的endDate
.System.FormatException:字符串未被识别为有效的日期时间。您的区域性是否设置为天/月/年?如果没有,您可以使用。我需要将日期和时间连接在一起。然后获取日期时间为17/06/2020 00:00:00.0001
@CadaMerx添加日期时间的日期部分和时间跨度正好可以做到这一点。请举个例子?@CadaMerx按照JonasH的建议执行,然后打印日期时间或调试并检查其值。它将有你想要的当前日期的时间。谢谢你这个漂亮的答案!。Isvar end=“23:59:59.9999”
或者它应该只包含三个999
正确吗?不客气-我更新了我的答案和小提琴以使用“.FFFF”而不是“.FFFF”。这将省略尾随的零。注意:您没有明确指定“退订日期”,如果您希望它在一天前,只需使用-1*backOffDay
而不是backOffDay
。