国产化之路-统信UOS + Nginx + Asp.Net MVC + EF Core 3.1 + 达梦DM8实现简单增删改查操作 (5)

国产化之路-统信UOS + Nginx + Asp.Net MVC + EF Core 3.1 + 达梦DM8实现简单增删改查操作

然后使用浏览器打开该站点,执行用户插入操作,页面显示信息变成如下显示:

国产化之路-统信UOS + Nginx + Asp.Net MVC + EF Core 3.1 + 达梦DM8实现简单增删改查操作

反馈的应该是插入的某个字段数据类型不对,原本输入的是数字的位置输入了非数字的字符,导致无法插入造成的,但未给出具体是哪个字段,分析我们当前的用户数据类型也就只有年龄是数字类型的,但这个有点不太可能,我们输入的确实是数字,其它和数字搭边的就是日期类型了。我们对这两个字段做了排查,结果发现是日期类型DateTime的原因,那为什么会这样呢?我们做一个简单的日期类型输出然后分别在开发机上和Web服务器上去运行试试看,结果如下:

国产化之路-统信UOS + Nginx + Asp.Net MVC + EF Core 3.1 + 达梦DM8实现简单增删改查操作

国产化之路-统信UOS + Nginx + Asp.Net MVC + EF Core 3.1 + 达梦DM8实现简单增删改查操作

上图第一张是在windows开发机上输出,第二张是在统信UOS上输出。第一个时间是DateTime.Now输出,第二个时间是特定时间输出,主要目的是为区分上下午。很明显看到,在开发机上是24小时格式的,但统信UOS是12小时格式的,并用中文标识出了上午、下午,在插入的时候就现了问题,但看了统信UOS时间设置也是24小时制的,网上找了一下,这个问题并不是只是统信UOS独有的,在Linux上都有这个问题,找了一下解决办法,需要在程序开始时设置CultureInfo.DefaultThreadCurrentCulture,我们可以把它加在Program的Main入口上,代码如下:

public static void Main(string[] args) { // 跨平台 DateTime 中文 上午 下午 解决方案 CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("zh-CN", true) { DateTimeFormat = { ShortDatePattern = "yyyy-MM-dd", FullDateTimePattern = "yyyy-MM-dd HH:mm:ss", LongTimePattern = "HH:mm:ss" } }; CreateHostBuilder(args).Build().Run(); }

CultureInfo.DefaultThreadCurrentCulture属性用来 获取或设置当前应用程序域中线程的默认区域性,从上面的代码理解是,将其设置中文区域,然后指定了短日期、完整时间以及长时间的格式,这里注意HH和hh的区别,HH是24小时制的,而hh是12小时制的。我们在日期输出小例子里加上这一段代码然后再看看其在来个系统统上的输出是怎么样的:

国产化之路-统信UOS + Nginx + Asp.Net MVC + EF Core 3.1 + 达梦DM8实现简单增删改查操作

国产化之路-统信UOS + Nginx + Asp.Net MVC + EF Core 3.1 + 达梦DM8实现简单增删改查操作

上图第一张是windows开发机,第二张是统信UOS,我们发现时间格式已经和开发机上格式一致了,然后我们再次发布站点,进行测试,问题解决。

小结

通过以上的简单案例,我们实现了在统信UOS操作系统,基于达梦D8数据库,使用.net core 3.1和EntityFramework core的简单增、删、改、查的操作,在这个过程中我们发现windows和Linux类操作系统日期显示格式的不同对我们所开发的应用造成的影响,这个问题应该并不是统信UOS独有的问题。我们当前只是个开端,随着业务的深入,所遇到的问题也将会越来越复杂,具体问题需要具体分析,不管是什么样的问题我们相信都有解决办法。

参考资料

DateTime中文上午下午解决方案:https://blog.csdn.net/i2blue/article/details/105798392

CultureInfo.DefaultThreadCurrentCulture属性介绍:https://docs.microsoft.com/zh-cn/dotnet/api/system.globalization.cultureinfo.defaultthreadcurrentculture?view=netcore-3.1

在 ASP.NET Core 中使用多个环境:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/environments?view=aspnetcore-3.1

EF Core连接达梦数据库参考1:https://blog.csdn.net/lordwish/article/details/104501226

EF Core连接达梦数据库参考2:https://blog.csdn.net/lordwish/article/details/108532022

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwwfxj.html