文化特定的DateTime字符串在不同的平台上是不一致的
我有一个测试应用程序,该应用程序允许用户从Combobox中选择文化,并在多行文本框中显示特定的文化日期.代码如下: public partial class Form1 : Form { public Form1() { InitializeComponent(); comboBox1.Items.AddRange( CultureInfo.GetCultures(CultureTypes.SpecificCultures)); } private void comboBox1_SelectedValueChanged(object sender, EventArgs e) { CultureInfo selectedCulture = comboBox1.SelectedItem as CultureInfo; DateTime currentDat
0 2024-04-21
编程技术问答社区
如何将SQLServer中的整理映射到C#CultureInfo对象? Cultureinfo类的参数应该是什么?
正在尝试根据从SQLServer检索到的整理详细信息在我的C#应用​​中创建 cultureinfo 对象. 当我查询数据库时,我收到的整理详细信息是 latin1_general_ci_ai .如何使用此信息创建CultureInfo对象?是否有其他方法可以创建与SQLServer数据库排列相匹配的CultureInfo对象? 请提供您的答复. 解决方案 您没有.没有一般的映射 - 尤其是因为SQL Server Collat​​ions确实结合了代码页(在C#CultureInfo中表示)以及实现详细信息(CL_AI实际上是指示特殊行为的标志).没有直接映射,因为文化信息包含整理粒度下的其他信息,这不会打扰诸如格式格式的元素. 其他解决方案 这是在表中获取列的lcID的查询 - "选择ColationProperty('Collat​​ionProperty','lCID')为'lcid',其中colationProperty是特定列的融合名称.
0 2024-04-21
编程技术问答社区
c#和日期文化问题
我已经编写了一个ASP.NET应用程序,我的一个寄回例程只是将用户提交的表单数据保存到SQL 2005 db.所有的开发机器都很好,但是当我部署到实时网站时,我会从解析日期检查器中获得无效的日期. 基本上,它希望在现场机器上使用美国日期格式,但这不是我想要的.用户需要能够以DD/mm/yyyy格式输入.因此,像2009年10月10日这样的有效日期会返回实时服务器上的错误,但在我的开发机器上没有返回错误.以下是引发异常的代码. DateTime dt; dt = DateTime.Parse(sdate); //sdate in GB dd/MM/yyyy format 是否有可能强迫parse常规期望DD/mm/yyyy格式的日期? 解决方案 确实喜欢: System.Globalization.CultureInfo cultureinfo = new System.Globalization.CultureInfo("en-
0 2024-04-21
编程技术问答社区
如何使用CultureInfo来格式化废弃的货币?
在dotnet中,以特定方式格式化货币的推荐方式是(据我所知): using System.Globalization var info = CultureInfo.GetCultureInfo("en-GB") return string.Format(info, "{0:c}", 1234.5678) 此返回: £1,234.57 但是.这里没有具体的货币.因此,如果英国曾经转换为欧元,同样的方法突然将返回以下内容: € 1,234.57 这刚刚发生在拉脱维亚.今年,它转换为欧元.各种系统都包含莱特维安(Letvian Lats)和欧元(Euros)中的数量.我需要仍然能够打印和格式化旧货币.而且我需要确保还可以处理新货币.这种格式不仅涉及符号,还与放置有关(前,之后,没有空间)和局部数字格式(十进制分隔符和数千个分隔符). 我们数据库中的每个金额都有货币(例如欧元)和相应的文化(例如NL-NL).欧元金额的格式不同,具体取决于它们是否起源于我
2 2024-04-20
编程技术问答社区
如何在WPF用户控件中显示动态文化格式的数字
我想动态设置数字文本块的文化格式,并使用传递到myusercontrol的文化和数值. Myculture和数值将传递给mycustomcontrol,并将为" en-gb"," en-us"等形式. 我在ASP.NET MVC中使用扩展方法做了类似的事情,但需要帮助如何将其拼凑在一起. 示例MVC扩展方法 public static MvcHtmlString CulturedAmount(this decimal value, string format, string locale) { if (string.IsNullOrEmpty(locale)) locale = HttpContext.Current.Request.UserLanguages[0]; return MvcHtmlString.Create(value.ToString(format, CultureInfo.CreateSp
0 2024-04-20
编程技术问答社区
在CultureInfo.CreateSpecificCulture方法中,如何将中性文化映射到特定文化?
我不知道中立文化是如何映射到特定文化的.它像下面一样静态吗? en = en-US fr = fr-FR pt = pt-BR 我检查了 htttp:htttp://globalization/cultureinfo.cs ,,44db57d9e190258e,参考 & 来自,但我听不懂.有人可以帮忙吗? 解决方案 我不认为这里有 ext 映射. en和en-US培养物是根据其 LCID属性在顺序上具有0x0009和0x0409. en是一种与语言相关的神经文化,但 与一个国家或地区. 但是en-US是一种特定的文化,与 一种语言和一个国家或地区. 这就是为什么您可以创建一个var region = new RegionInfo("en-US"); 但是您不能用en 创建 var region = new RegionInfo("en"); 说; 区域名称en应该不是对应于中性培养. A 需要特定的文化名称.
0 2024-04-20
编程技术问答社区
Thread.CurrentThread.CurrentCulture在一个线程池内的线程中不起作用。
我有一种方法,该方法将在线程内部调用,这些线程由ThreadPool管理. 该方法正在调用DLL的方法,不幸的是,该方法需要一个特定的位置以正确执行. 在将此方法放入ThreadPool运行之前,我在应用程序主线程运行时以及我手动管理线程并且可以正常工作时对其进行了测试,但是当我将其放入线程池中时,Locale是未应用,因此该方法行为不正确. 这是该方法的一部分,应受环境变化影响(但行为不佳): CultureInfo before = Thread.CurrentThread.CurrentCulture; Thread.CurrentThread.CurrentCulture = new CultureInfo("fa-IR"); int result = tsms.SendSMS(smsTask.MobileNumber.MobileNumberInString, smsTask.Message); Thread.CurrentThread.CurrentUIC
0 2024-04-20
编程技术问答社区
asp.net-mvc(2)中Modelbinding double的CultureInfo问题
在我的jQuery脚本中,我使用使用.作为分数分离器的浏览器的CultureInfo(EN-UK)发布了两个双打.我的MVC应用程序使用,作为分数分离器在Locale nl-be上运行. [AcceptVerbs(HttpVerbs.Post)] public JsonResult GetGridCell(double longitude, double latitude) { var cell = new GridCellViewModel { X = (int)Math.Round(longitude, 0), Y = (int)Math.Round(latitude, 0) }; return Json(cell); } 由于解析问题,模型限制失败. 我认为最好将我的JavaScript设置为en-uk,而对于我的MVC应用程序中的模型限制也是如此.但是我也不知道该怎么做. 有什么建议吗? 解决方案 我不确定默认模型活页夹的本地化多远(De
0 2024-04-20
编程技术问答社区
为WPF的DateTimePicker验证设置文化
我在WPF应用程序上使用DateTimePicker. 我想将.TEXT属性绑定到选定的日期,因此我使用这样的绑定: 我的问题是我使用欧洲文化,所以:日/月/年而不是每月/日/年,所以如果我输入:14/02/2013,我有验证错误! 我该如何解决? 解决方案 已解决: J
0 2024-04-20
编程技术问答社区
.net 文化特定的12/24小时格式化
有没有一种方法可以保持特定文化的日期时间格式,但是强制渲染12/24小时?我知道我可以使用HH:mm:ss和hh:mm:ss的实际日期/时间格式字符串做很多事情/24小时渲染. 解决方案 我可能会做这样的事情: var culture = CultureInfo.CurrentCulture; var pattern = culture.DateTimeFormat.LongTimePattern; // or pick which one you want to use; var newPattern = pattern.Replace("h", "H").Replace("t", ""); DateTime.Now.ToString(newPattern); // or use whatever DateTime you want to use 从聊天中: 这是所有文化的长时间模式字符串的列表,以
0 2024-04-19
编程技术问答社区
MonthGenitiveNames和MonthNames之间有什么区别?为什么有空白作为月份?
我对MonthGenitiveNames和MonthNames感到困惑.有两个月的名称作为两者的值,那么MonthGenitiveNames和MonthNames> 之间有什么区别 还为什么一个月有"空白"?如果您看两者的值,则有空白值.一个月名称中空白的原因是什么? 解决方案 存在属格名称,因为某些语言使用不同的名词表达日期(属于属性而不是主格). 例如.在一月份的波兰名义中是"史蒂芬",但要表达日期1月2日,您需要使用属格的" 2 stycznia". 其他解决方案 迈克尔·卡普兰(Michael Kaplan)写了一堆有关遗传的人(请参阅除了用于Gregorian日历外,还将月名和GenitivemonThnames属性用于Gregorian以外的其他日历.当这样的日历系统有13个月时,第13个月就不会空白.由于Gregorian系统中没有13个月,它将永远是空白的. 其他解决方案 链接:: 例如
0 2024-04-19
编程技术问答社区
C#和当前不同国家的当地时间
c#提供了一种通过DateTime.Now获得当前日期的方法.但是问题是我的服务器在我们身上,我在使用DateTime.Now 的时间里得到了美国的时间 当我的用户来自世界各地时,是否有任何方法可以在C#中获得当前的当地时间? (我有每个用户的地点,因此,如果我能获得每个语言环境的当前时间,那么我很安全) 我已经看过一种方法时区,但是我必须保留时区与国家参考. 我已经搜索过,这里的大多数问题是关于将UTC时间转换为本地时间,反之亦然.希望有人能够启发我. 解决方案 使用UTC Time (DateTime.UtcNow)节省时间,然后根据用户时区的时区更改此UTC时间.切勿在DB 中节省本地时间 其他解决方案 只需查看 timezoneinfo class.在维护DST(日光节省时间)的同时,您应该能够从那里转换到本地到服务器时间. . DateTimeOffset newTime = TimeZoneInfo.ConvertTime(DateTimeO
0 2024-04-19
编程技术问答社区
C#, 数据时间格式化, 货币名称, 文化信息
我目前正在研究一个小程序,我想清楚地显示日期和时间,根据cultianInfo,这样 3月3日,星期日.2017年7:46:57 AM 但是,我希望有可能选择任何国家,并根据其编写日期的方式获取日期输出.例如,在丹麦,我想展示: søndag,3.Marts 2017 7:46:57 ( 请注意," 3 "在月的另一侧. 我可以使用CultureInfo.getcultures获得所有CultureInfo,这没问题,但是当我展示日期时间时,我将获得'星期日3/12/2017 7:46:57 AM'使用myDateTime.toString(mycultureinfo); 我知道如何提取月份的名称,我可以手动构造一个字符串,所有这些数据都显示了我所知道的文化的方式,但是我不能为我不知道的文化而言.如果有人选择"中文" OG"阿拉伯语",我不知道该显示什么. 我在想是否有某种方法可以在任何文化的正确位置获得所有月份名称? 解决方案 我不认为您要寻找的格式是所有
0 2024-04-19
编程技术问答社区
有没有办法将字符串"尝试"到system.globalization.cultureinfo
在C#中,我正在使用 CultureInfo.GetCultureInfo(myCulture) 但是字符串变量可能不会以良好的格式出现,是否有一种方法可以先尝试解析字符串或先验证. 解决方案 以下产生了所有文化的集合: CultureInfo.GetCultures(CultureTypes.AllCultures) 从那里而不是GetCultureInfo您可以做: .FirstOrDefault(c => c.Name == myCulture) 而不是AllCultures您可能需要过滤掉 SpecificCultures . 其他解决方案 没有带有文化对象的tryparse.一种方法是通过建议的所有文化进行遍历,并寻找一种方法是使用简单的尝试解析: try { // making sure the lang is a calture System.Globalization.CultureInfo c = ne
0 2024-04-19
编程技术问答社区
国家名称转为ISO 3166-2代码
我知道如何将ISO 3166-2代码转换为完整的英语名称,例如使用RegionInfo. 但是,我该怎么做相反的事情,即以"美国"的方式返回"我们"? 解决方案 //Get the cultureinfo RegionInfo rInfo = new RegionInfo("us"); string s = rInfo.EnglishName; //Convert it back CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures); CultureInfo cInfo = cultures.FirstOrDefault(culture => new RegionInfo(culture.LCID).EnglishName == s); 其他解决方案 主要思想:取所有区域对象,然后从其中选择包含全名给定的全名. var regionFullNames = C
0 2024-04-19
编程技术问答社区
convert.todouble和double.parse与不变文化相关的差异
我想知道为什么这起作用: doubleValue = double.Parse(input[0].ToString(System.Globalization.CultureInfo.InvariantCulture).Replace(',', '.'), System.Globalization.CultureInfo.InvariantCulture); 这不是: doubleValue = Convert.ToDouble(input[0]) 重点是,一个国家/地区大约有30台机器(相同的Windows映像,相同的硬件,不同的位置).虽然前20台机器的Convert.ToDouble()都可以很好,但其他10台机器无法正确转换值(无论是点还是逗号,它们都会松动小数点). . 由于该程序确实很大,因此是否有机会Convert.ToDouble()在不更改程序本身的情况下工作? 另一点是,我尝试了不同的方法将我的字符串值转换为双重,它们都在起作用,但只有
0 2024-04-19
编程技术问答社区
波斯历在CultureInfo中无效
此代码怎么了? 错误(异常)消息: 不是给定文化的有效日历. System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("fa-Ir"); //Error ci.DateTimeFormat.Calendar = new System.Globalization.PersianCalendar(); Application.CurrentCulture = ci; 它是什么解决方案? 我可以在Windows XP区域选项中添加Calendar类型吗? 解决方案 基于反射的解决方法在这里: 其他解决方案 Persiancalendar的MSDN文章中明确提到了它 您的应用程序不应使用 Persiancalendar对象为默认 文化的日历.默认值 日历由 cultureinfo. -calendar财产和 必须是返回的日历之一 由 cultureinfo.
0 2024-04-19
编程技术问答社区
如何确定一个CultureInfo实例是否支持拉丁字符
是否可以确定我正在使用的一个实例是基于拉丁字符集吗? 解决方案 我相信您可以使用CultureInfo.TextInfo.ANSICodePage. 其中只有太多(这里详细介绍: http://msdn.microsoft.com/en-us/goglobal/bb964654 ). 您通常只需要检查其值为1252或1250 其他解决方案 不确定这是否足够,但是使用 charunicodeinfo.getunicodecategory 方法 另请参见脚本属性上的Unicode Uax#24 和 unicode字符到脚本
0 2024-04-18
编程技术问答社区
为什么没有一个文化枚举?
问候, 我想知道为什么C#中没有关于文化的预先枚举? 既然文化永远不会改变,并且总是像" NL-NL",EN-GB,En-US. [编辑] 正如所述的文化确实改变了..但不是全部.为什么不制作持有所有文化的枚举/班级类型,并有可能添加/更改它们? 解决方案 "由于文化永远不会改变" 不是吗? this文章4:全球化的新事物)不同意.仅在过去的5年中,塞尔维亚地区发生了很多变化,导致了新的文化. 在现实世界中,由于本地市场的文化发展,全球化信息正在不断变化,因为新标准经常更新文化敏感信息,或者因为微软找到了有关不同市场的更准确的信息或扩展到更多市场. Microsoft .NET Framework 4至少支持354种培养物,而先前版本中至少有203种培养物.其中许多培养物是添加的中性培养物,这些培养物是将父链完成到根中性培养物的中性. 例如,将三种inuktitut中性添加到已经存在的文化Inuktitut(加拿大教学大学)和Inuk
0 2024-04-18
编程技术问答社区
CultureInfo线程安全
我有一个多线程应用程序,该应用程序解析了一些文本,并且需要使用英语文化信息来解析此文本的数字. 因此,我不想每次调用解析功能时都创建工程文化.目前,我正在将英语作为参数传递,但我对此不满意. 我想将英语定义为静态成员,因此将通过线程共享. MSDN文档说:"此类型的任何公共静态(在Visual Basic中共享)都是线程安全的.任何实例成员都不能保证是线程安全的." 我只是在使用以下功能,所以我怎么知道TryParse是否使用Engulture的任何实例成员? public static CultureInfo EngCulture = new CultureInfo("en-US", false); void parser() { if (int.TryParse(value, NumberStyles.Number, EngCulture, out num))... } 解决方案 尝试使用CultureInfo.GetCultureInfo("en-US"
0 2024-04-18
编程技术问答社区