我正在尝试根据从请求中收到的参数创建一个新日期。
我有这个代码:
DateTime datefrom = DateTime.ParseExact(DateFromTextBox1.Text,"dd/mm/yyyy", CultureInfo.InvariantCulture).ToUniversalTime();
int hoursFrom = HourFromTextBox1.Text!=String.Empty?Convert.ToInt32(HourFromTextBox1.Text):0;
int minutesFrom = HourFromTextBox1.Text != String.Empty ? Convert.ToInt32(MinuteFromTextBox1.Text) : 0;
date1 = new DateTime(datefrom.Year, datefrom.Month, datefrom.Day, hoursFrom, minutesFrom, 0).ToString("yyyy-MM-dd HH:mm:ss");
我得到这样的东西:
2018-01-19 13:11:00
当我尝试解析的初始日期是这样的时:
"20/10/2018"
小时和分钟是正确的。但是日期和月份不是。
我认为输出是因为我电脑上的时间是这样的: 2018 年 10 月 11 日。这可能是一个文化问题。
我怎样才能根据预期得到正确的日期?
最佳答案
将时间转换为世界时,结果不同。尝试将 "dd/MM/yyyy"
作为解析字符串。 "mm"
用于日期时间解析中的分钟,请参阅此文档以了解日期时间自定义格式 Custom Date and Time Format Strings
前 -
DateTime datefrom = DateTime.ParseExact("20/10/2018","dd/MM/yyyy", CultureInfo.InvariantCulture);
Console.WriteLine(datefrom); //20.10.2018 00:00:00 without universal time
DateTime datefromUniversal = DateTime.ParseExact("20/10/2018","dd/MM/yyyy", CultureInfo.InvariantCulture).ToUniversalTime();
Console.WriteLine(datefromUniversal); //19.10.2018 22:00:00 with universal time
int hoursFrom = "13"!=String.Empty?Convert.ToInt32("13"):0;
int minutesFrom = "11" != String.Empty ? Convert.ToInt32("11") : 0;
var date1 = new DateTime(datefrom.Year, datefrom.Month, datefrom.Day, hoursFrom, minutesFrom, 0).ToString("yyyy-MM-dd HH:mm:ss");
Console.WriteLine(date1);
希望现在你明白了
关于c# - DateTime 表示和转换显示错误的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52761384/