c# - DateTime 表示和转换显示错误的日期

标签 c#

我正在尝试根据从请求中收到的参数创建一个新日期。

我有这个代码:

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/

相关文章:

c# - 在 TextBox 中查找插入符号的位置

c# - 具有在 C# 中可见的算术运算符的 F# 结构

c# - 在 C# 中重新启动 foreach 循环?

c# - WPF-如何从 View 而不是viewmodel显示自定义异常

c# - 获取编译器错误 CS0122 - 'member' 由于其保护级别而无法访问 - 在尝试访问不同项目中的类时

c# - 您会在大学系的类(class)中使用什么数据结构?

c# - cloudfront 私有(private)限时 url

c# - 是否可以在 asp.net 中更改/限制 dynamicfilter 的值

c# - 循环遍历 appConfig 文件的不同部分

c# - Runspace Powershell 命令的 WSManConnectionInfo 和 PSCredential 作为另一个用户