C#中的CultureInfo类

CultureInfo类位于System.Globalization命名空间内,这个类和命名空间许多人都不是很熟悉,实际我们在写程序写都经常间接性的接触这个类,当进行数字,日期时间,字符串匹配时,都会进行CultureInfo的操作,也就是说,也就是不同的CultureInfo下,这些操作的结果可能会不一样,由于我们大部分开发部署都是在同一种语言环境中,平日里可能没有感觉到它的用处,如果你的开发的项目是给国外用户用的,有可能在你机器上运行输出是一种效果,在客户机器上是另一种输出效果,这句需要用到CultureInfo类了,对使用用户来说,这也是ms提供的人性化的一面(比方说,同样是日期,中文环境输出符合中国人的习惯,德语环境中的输出符合德国人的习惯,这是默认的输出方式),但对开发人员和服务数据中心来说,就要选择是保证统一的输出,还是用ms的默认方式了。
code如下:

 1    static readonly string[] CultureSources = { "en-us", "zh-cn", "ar-iq", "de-de" };
 2         static readonly Random Ran = new Random(Environment.TickCount);
 3 
 4 
 5         static void Main()
 6         {
 7             for (int i = 0; i < CultureSources.Length; i++){
 8                 ThreadPool.QueueUserWorkItem(Client, i);
 9 }
10             Console.ReadLine();
11         }
12 
13 
14         static void Client(object obj)
15         {
16             int id = (int)obj;
17             Thread.Sleep(Ran.Next(1000));
18             CultureInfo culture = CultureInfo.GetCultureInfo(CultureSources[id]);            
19             Thread.CurrentThread.CurrentCulture = culture;
20             Console.WriteLine("操作系统语言设置成{0}\n数据输出是:{1}\n", culture.DisplayName, DateTime.Now.ToShortDateString());
21         }

运行结果如下:

结果看到了吧,同样的DateTime.Now.ToShortDateString(),在英语-美国,中文-中国,阿拉伯语-伊拉克和德语-德国的不同环境下,日期输出格式竟然有如此不同的输出结果,这样对使用的用户来说是很友好的,单对编程人员来说,如果对这些数据要处理,就要考虑不同的语言环境中,该怎么处理了,同时,这些数据让数据中心服务器情何以堪啊……
原因分析:
.NET会考虑当前线程的CultureInfo,即Thread.CurrentThread.CurrentCulture(或者CultureInfo.CurrentCulture),并根据CultureInfo,进行相应地区文化的数据处理,要解决这个问题,这样设置
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;//和new CultureInfo("");一样,使用固定区域性,固定区域性不区分区域性;它与英语语言关联,但不与任何国家/地区关联
这样不管客户端运行在什么语言环境下,输出的时间格式都是统一的,方便数据中心服务器对数据做后续处理。

结果如下图:

支持多种CultureInfo是整个.NET Framework更加人性化,因为这可以使同一个数据适应不同地区和文化,这样当然满足处于不同地区和文化的用户,但前提是数据给“人”看,如果这些数据用于计算机之间的传输,即给“机器”看,这样的多文化处理反而不妥,造成同一个数据的不同展现形式,尤其是读写两方的文化地区不同时,数据可能根本无法被正常读取或者产生潜在bug,因此这里,正是InvariantCulture的用武之地。

转载自:https://blog.csdn.net/xuwei_xuwei/article/details/32717259

转载于:https://www.cnblogs.com/LagoOrLY/p/10313193.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/365794.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

clistctrl控件最后插入在后面_老板让我把图片放到Excel表格中,批量插入效率高...

私信回复关键词【福利】&#xff0c;获取丰富办公资源&#xff01;助你高效办公早下班&#xff01;大家好&#xff0c;我是懂点 Excel 的小E~初入「江湖」&#xff0c;还请大家多多关照&#xff01;今天我们来学学 Excel 图片的 6 个小技巧&#xff0c;满满都是干货&#xff0c…

python天气预报的功能介绍_python实现智能语音天气预报

本系统主要包括四个函数&#xff1a; 1、获取天气数据 1、输入要查询天气的城市 2、利用urllib模块向中华万年历天气api接口请求天气数据 3、利用gzip解压获取到的数据&#xff0c;并编码utf-8 4、利用json转化成python识别的数据&#xff0c;返回为天气预报数据复杂形式的字典…

vue获取DOM元素并设置属性

这里我想到了2个方法&#xff1a; 方法一&#xff1a; 直接给相应的元素加id,然后再document.getElementById("id");获取&#xff0c;然后设置相应属性或样式 方法二&#xff1a; 使用ref,给相应的元素加ref“name” 然后再this.$refs.name获取到该元素 注意&…

甲骨文发布Java 8

甲骨文决定在3月18日发布升级到JDK&#xff08;Java开发工具包&#xff09;8的消息&#xff0c;尽管新版本可能会带来一些错误&#xff08;如Full speed所介绍的那样&#xff09; &#xff1a;甲骨文将在3月份发布Java 8&#xff0c;即使有错误 。 Oracle JDK 8发行经理Mathia…

python所有基础

下面就不一一列举了&#xff0c;所有的资料都和GitHub对接&#xff0c;到时候我有更新就直接拖到GitHub上面了。入门的小伙伴们可以进来看看&#xff0c;估计后面还会有很多项目&#xff0c;待更新。 转载于:https://www.cnblogs.com/wuzaipei/p/9633673.html

计算机硬件系统一直延用,会计从业资格证考试:会计电算化计算机硬件系统

要求掌握冯•诺依曼计算机体系结构的基本思想&#xff0c;熟悉计算机硬件的组成及其工作原理&#xff0c;掌握计算机中的常用术语和主要性能指标。1946年&#xff0c;著名美籍匈牙利数学家冯•诺依曼(JohnVon Neumann)提出并论证了计算机体系结构的基本思想。目前的电子计算机都…

部署环境_Hyperledger Fabric Composer环境部署(一)

声明&#xff1a;本体系Hyperledger Fabric Composer相关分享都是基于MacPro进行多次亲测和体验。今天我这里主要介绍的是这些先决条件安装完成后&#xff0c;如何搭建和使用一个基础环境的问题&#xff0c;适合有一定基础的同学一起交流&#xff0c;也欢迎随时留言交流&#x…

输入参数的数目不足_sklearn.decomposition.PCA 参数速查手册

sklearn常用的API参数解析&#xff1a;sklearn.linear_model.LinearRegression调用sklearn.decomposition.PCA(n_componentsNone, copyTrue, whitenFalse, svd_solverauto, tol0.0, iterated_powerauto, random_stateNone)参数n_components释义PCA 算法中所要保留的主成分个数 …

vue-cli打包之后的项目在nginx的部署

vue-cli执行 npm run build 进行打包&#xff0c;生成dist文件夹&#xff0c;把该文件夹下的文件直接复制到nginx服务器目录下&#xff0c;就可打开项目&#xff0c;但是只有首页是可以看到的&#xff0c;再刷新一下就404了&#xff0c;原因是vue的项目为单页应用&#xff0c;路…

了解位图

几周前&#xff0c;我和Alistair一起研究了用于对Neo4j数据库中节点已附加到其上的标签进行建模的代码。 这种工作方式是将32个节点ID的块表示为每个标签的32位位图 &#xff0c;其中位1表示节点具有标签&#xff0c;而0表示没有标签。 例如&#xff0c;假设我们有节点ID 0-3…

centos7输入法,非root用户无法使用

背景&#xff1a; 1. centos7安装完了输入法之后&#xff0c;root账号能正常使用&#xff0c;但是非root账号始终无法使用中文 解决方案&#xff1a;   1. 登录非root账号&#xff0c;编译家目录的隐藏文件.bash_profile  export GTK_IM_MODULEibus  export XMODIFIERSim…

服务器旧图片维护,图片服务器

注意&#xff1a;AKCMS已于2019年12月27日宣布停止更新&#xff0c;此文档仅供老用户参考&#xff0c;不建议新用户选择AKCMS建站。注意&#xff1a;AKCMS6.1.2已取消授权机制&#xff0c;文档中关于授权、服务、技术支持等的内容均已失效。3.9.4版本起&#xff0c;增加了图床功…

各种说明方法的答题格式_语文万能答题公式,给孩子收藏吧!

1、某句话在文中的作用1、文首&#xff1a;开篇点题&#xff1b;渲染气氛(散文)&#xff0c;埋下伏笔(记叙类文章)&#xff0c;设置悬念(小说)&#xff0c;为下文作辅垫&#xff1b;总领下文&#xff1b;2、文中&#xff1a;承上启下&#xff1b;总领下文&#xff1b;总结上文&…

pr文字转语音有插件吗_文字转语音软件深度解析

网络时代的迅猛发展&#xff0c;丰富了我们的眼见&#xff0c;便利了我们的生活&#xff0c;升华了我们的素养。那你知道近年来配音行业的迅速崛起吗&#xff1f;视频配音&#xff0c;广告配音&#xff0c;小视频配音等等&#xff0c;其实配音处处都陪伴在我们身边&#xff0c;…

装饰图案

装饰图案 我不经常使用的一种设计模式是Decorator 。 我不确定为什么这种模式不受欢迎&#xff0c;因为它很方便。 装饰器模式允许以受控方式向对象添加功能。 即使在使用静态类型的语言时&#xff0c;也可以在运行时运行&#xff01; 装饰器模式是子类的替代方法。 子类化在编…

Webpack - 自学笔记

webpack 4第1课 概念1 模块化工具 构建工具 打包工具2 webpack把所有的东西打包成js文件&#xff0c;压缩图片&#xff0c;把sass生成css,3 热加载4 自己有服务器第2课 安装1 先安装NodeJS node --version2 换成淘宝镜像 npm install -g cnpm --registryhttps://registry.np…

Neural Networks

神经网络能够使用torch.nn包构建神经网络。 现在你已经对autogard有了初步的了解&#xff0c;nn基于autograd来定义模型并进行微分。一个nn.Module包含层&#xff0c;和一个forward(input)方法并返回output。 以如下分类数字图片的网络所示&#xff1a; 这是一个简单的前馈网络…

文件服务器磁盘配额管理,Windows2008 (FSRM)文件服务器资源管理器网站文件夹磁盘配额管理...

在windows server里提供了一个功能强大的管理工具&#xff0c;就是文件服务器资源管理器。简称FSRM(File Server Resource Manager)通过此工具&#xff0c;可能对网站进去配额以及相关服务。我们通过使用FSRM&#xff0c;可以为文件夹和卷设置配额&#xff0c;主动屏蔽文件&…

python读取hdf5文件_Python处理HDF5文件

笔记地址&#xff1a;有道云笔记 h5py 的安装 pip install h5py 读取 H5 文件 import h5py import numpy as np # 打开文件 f h5py.File(test-dev.h5, r) H5 中的group可以类比为字典&#xff0c;因此我们可以用keys()来获取键值。 >>> f.keys() [umy_xmax, umy_xmin…

数据分析sql面试必会6题经典_面试数据分析会遇到的SQL题

「1」说在前面数据存放在数据库里&#xff0c;以表的形式分门别类。宜家的商品(数据)放在宜家的仓库(数据库)里&#xff0c;以货位的形式分门别类。在宜家&#xff0c;可以通过商品上的编号&#xff0c;查到商品在仓库的排号和位号&#xff0c;取到商品。SQL 语言是一种通用的数…