在C#中将dd / mm / yyyy字符串转换为yyyy-dd-mm DateTime

时间:2019-05-13 09:24:52

标签: c# asp.net linq

如何将13/05/2019(dd / mm / yyyy)字符串转换为2019-13-05(YYYY-dd-mm) DateTime c#中的数据类型,sql服务器希望使用YYYY- dd-mm格式数据类型

string dateTime = "05/13/2019";

if (animalAdoption.AdoptionId != 0)
{
    AnimalsAndBirdsAdoption animalsAndBirdsAdoption = new AnimalsAndBirdsAdoption()
    {
        AnimalsAndBirdsId = animalAdoption.AnimalId,
        DonarDetailsId = userId,
        Term = model.Term,
        PeriodOfAdoption = dateTime,
        isActive = true,
        Amount = animalAdoption.amount
    };
    if (context.AnimalsAndBirdsAdoptions.Any(e => e.Id == animalAdoption.AdoptionId))
    {
        context.AnimalsAndBirdsAdoptions.Attach(animalsAndBirdsAdoption);
    }
    else
    {
        context.AnimalsAndBirdsAdoptions.Add(animalsAndBirdsAdoption);
    }
}

我得到的结果

4 个答案:

答案 0 :(得分:2)

您可以使用下面的示例并使用所需的格式来简单地完成此操作:

string dateTime = "05/13/2019";

CultureInfo provider = CultureInfo.InvariantCulture;  
// It throws Argument null exception  
DateTime dateTime10 = DateTime.ParseExact(dateTime, "yyyy/dd/mm", provider);  

答案 1 :(得分:0)

将PeriodOfAdoption的数据类型更改为类型System.DateTime

然后您可以使用具有很多重载的DateTime构造函数来初始化属性。

如果您的字符串格式始终基于yyyy-dd-mm格式,则基于:'2019-13-05' 您可以通过使用.Split('-')字符串函数或格式为'2019/13/05'的年份提取月份和月份的年份,例如, .Split('/')

然后,您可以像这样使用构造函数创建DateTime对象(您可以在https://docs.microsoft.com/en-us/dotnet/api/system.datetime.-ctor?view=netframework-4.8处查看它们):

构造函数

public DateTime (int year, int month, int day);

初始化

PeriodOfAdoption = new DateTime(2019, 5, 13)

所以把它们放在一起:

var dateTime = '2019/13/05';
var dateParts = dateTime.Split('/');
PeriodOfAdoption = new DateTime(Int32.parse(dateParts[0]), Int32.parse(dateParts[1]), Int32.parse(dateParts[2]));

如果您需要在c#端使用string,则在C#中这非常简单,并且在线上有很多示例

答案 2 :(得分:0)

string dateTime = "13/05/2019";
var splittedDateTime = dateTime.Split('/');
DateTime myDate = new DateTime(int.Parse(splittedDateTime[2]), int.Parse(splittedDateTime[1]), int.Parse(splittedDateTime[0]));

答案 3 :(得分:0)

要将英国日期字符串转换为DateTime

public DateTime? ToDateTime(string text)
{
    DateTime? returnValue = null;
    System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("en-GB");
    DateTime d = new DateTime();
    if(DateTime.TryParse(text, cultureInfo, System.Globalization.DateTimeStyles.None, out d))
    {
        returnValue = d;
    }
    return returnValue;
}

要将DateTime转换为字符串yyyy-MM-dd:

public string ToBigEndianString(DateTime? date)
{
    string returnValue = null;
    if(date != null)
    {
        returnValue = date.Value.ToString("yyyy-MM-dd");
    }
    return returnValue;
}

然后您可以将它们放在一起:

public string ToBigEndianString(string ukDate)
{
    DateTime? d = ToDateTime(ukDate);
    return ToBigEndianString(d);
}

但是您可以将DateTime传递给SQL存储过程。 https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlparametercollection.addwithvalue?view=netframework-4.8