Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中,将字符串的一部分转换为datetime#_C# - Fatal编程技术网

C# 在C中,将字符串的一部分转换为datetime#

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

我在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: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的建议执行,然后打印日期时间或调试并检查其值。它将有你想要的当前日期的时间。谢谢你这个漂亮的答案!。Is
var end=“23:59:59.9999”
或者它应该只包含三个
999
正确吗?不客气-我更新了我的答案和小提琴以使用“.FFFF”而不是“.FFFF”。这将省略尾随的零。注意:您没有明确指定“退订日期”,如果您希望它在一天前,只需使用
-1*backOffDay
而不是
backOffDay