标签: cultureinfo

如何使DateTime独立于当前的文化?

我想尝试将日期时间转换为字符串并返回,但要使其适用于所有文化.

我基本上有一个Textbox(tbDateTime)和一个标签(lbDateTime).标签告诉用户软件期望输入tbDateTime的格式.Textbox的输入将用于MySQL命令.

目前它的工作原理如下:

lbDateTime.Text = "DD.MM.YYYY hh:mm:ss";   // I live in germany
DateTime date = Convert.ToDateTime(tbDateTime.Text);
String filter = date.ToString("yyyy-MM-dd HH:mm:ss");
Run Code Online (Sandbox Code Playgroud)

现在我的问题:

  • 是否可以根据当前文化确定lbDateTime.Text的格式字符串?
  • Convert.ToDateTime函数使用哪种格式?

我希望你能帮助我.我实际上没有电脑来测试不同的文化,所以我非常害怕我做错了什么.

c# datetime cultureinfo

5
推荐指数
2
解决办法
1万
查看次数

是否可以为MaskedEditExtender设置掩码,以便在任何文化中使用日期格式MMM-yyyy?

正如标题所说,我遇到的问题是我需要使用短月份名称格式和年份,日期由AjaxControlToolkit中的MaskedEditExtender验证.DateTime的MMM-yyyy与MaskedEditExtender.Mask ="LLL-9999"不同.

如果我使用en-US语言环境,那就像魅力一样,但是如果我切换到fr-FR那么它将无法工作,因为法语中的短月表示使用4到5个字母(包括点).

有什么想法吗?谢谢.

asp.net cultureinfo maskededitextender ajaxcontroltoolkit

5
推荐指数
1
解决办法
1809
查看次数

在.NET中,如何获取给定文化的YYYY,MM和DD的顺序

设计一个独立于文化的生日输入,包括三个选择:年,月和日.

在.NET中,如何为给定的文化获得三者的正确显示顺序,即:

?????????????????  ??????????????????  ????????????????
? Select year ?v?  ? Select month ?v?  ? Select day ?v?  
?????????????????  ??????????????????  ????????????????

?????????????????  ??????????????????  ????????????????
? Select day  ?v?  ? Select month ?v?  ? Select year?v?  
?????????????????  ??????????????????  ????????????????
Run Code Online (Sandbox Code Playgroud)

要么

?????????????????  ??????????????????  ????????????????
? Select month?v?  ? Select day   ?v?  ? Select year?v?  
?????????????????  ??????????????????  ????????????????
Run Code Online (Sandbox Code Playgroud)

*更新* 感谢大家的回答,这让我想出了这个小功能:

  Public Function GetDateElementAtPos(ByVal pos As Integer) As String
    Return Mid(Me.myCultureInfo.DateTimeFormat.ShortDatePattern.Split(Me.myCultureInfo.DateTimeFormat.DateSeparator)(pos), 1, 1).ToLower
  End Function
Run Code Online (Sandbox Code Playgroud)

其中myCultureInfo代表初始化Globalization.CultureInfo.我这样使用它:

Dim s as new stringbuilder …
Run Code Online (Sandbox Code Playgroud)

.net date cultureinfo

5
推荐指数
1
解决办法
95
查看次数

什么时候使用不变文化?

使用不合适InvariantCulture吗?并且,如果使用,它会影响任何全局设置吗?

Dim hh As Decimal = 123456789.123456

' Is this an appropriate usage?
Dim ll As String = hh.ToString("N4", CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)

.net cultureinfo

5
推荐指数
2
解决办法
528
查看次数

强制.NET编写本机波斯数字而不是美国格式

我试图设置ASP.NET应用程序的Culture和UICulture但没有成功.也在C#Windows应用程序中尝试过.

System.Globalization.CultureInfo a = new System.Globalization.CultureInfo("fa-IR");
a.NumberFormat.DigitSubstitution = System.Globalization.DigitShapes.NativeNational;
string Q = string.Format(a, "{0}", 1234567890); // Output 1234567890 instead of ??????????
Run Code Online (Sandbox Code Playgroud)

我在代码中遗漏了哪些部分?

.net c# vb.net asp.net cultureinfo

5
推荐指数
0
解决办法
1351
查看次数

CultureInfo(来自同一文化)的实例基于OS的变化

我有一个写下这样日期的网站:

CultureInfo cultureInfo = CultureInfo.GetCultures(CultureTypes.AllCultures).FirstOrDefault(c => string.Equals(c.TwoLetterISOLanguageName, MvcApplication.Language));
return string.Concat(date.Day, ".", cultureInfo.DateTimeFormat.GetAbbreviatedMonthName(date.Month));
Run Code Online (Sandbox Code Playgroud)

在这两个我的电脑(Windows 7的Service Pack 1起,西班牙文化)和服务器(Windows Server 2012中,英文化)的MvcApplication.Languagees让我从列表中得到文化是:es-ES.

我希望他们都写相同的字符串(他们有不同的文化,但我没有使用CurrentCulture).但结果是abr在我的电脑和Abr.服务器中.

我试过这个与MvcApplication.Language使用LinqPAD隔离但它仍然不同.我已经打印了各种计算机的数组,AbbreviatedDayNames并且AbbreviatedMonthNames它们各不相同.

我做错了什么或这是预期的行为?如何使其完全独立于Windows /用户文化?

c# asp.net-mvc culture cultureinfo datetime-format

5
推荐指数
1
解决办法
373
查看次数

您是否可以像.NET一样在javascript中获取文化信息字符串?

我需要从浏览器的语言中获取文化字符串。

我考虑过从javascript这样获取代码:

var userLang = navigator.language || navigator.userLanguage;
Run Code Online (Sandbox Code Playgroud)

但这只给了我从.NET获得的文化信息的第一部分:

Thread.CurrentThread.CurrentCulture.Name;
Run Code Online (Sandbox Code Playgroud)

因此,javascript为我提供了“ de”或“ pl”,而不是.NET中的“ de-DE”或“ pl-PL”。有没有办法获取“完整信息”?

javascript c# asp.net culture cultureinfo

5
推荐指数
2
解决办法
2万
查看次数

如何使用CultureInfo格式化已弃用的货币?

在dotnet中,以文化特定方式格式化货币的推荐方法是(据我所知):

using System.Globalization
var info = CultureInfo.GetCultureInfo("en-GB")
return string.Format(info, "{0:c}", 1234.5678)
Run Code Online (Sandbox Code Playgroud)

返回:

 £1,234.57
Run Code Online (Sandbox Code Playgroud)

然而.此处未给出具体货币.因此,如果英国转换为欧元,同样的方法会突然返回如下:

 € 1,234.57
Run Code Online (Sandbox Code Playgroud)

这恰好发生在拉脱维亚.今年,它转换为欧元.各种系统包含letvia lats和euros两种金额.我需要能够打印和格式化旧货币.我需要确保新货币也可以处理.此格式不仅与符号有关,还与放置(前后,有或没有空格)和本地数字格式(小数分隔符和千位分隔符)有关.

我们数据库中的每个金额都有货币(例如EUR)和相应的文化(例如nl-NL).欧元金额的格式不同,具体取决于它们来自我们的德国或荷兰办事处.(他们都使用欧元,但格式不同)

  • dotnet是否提供对旧货币的访问?
  • 什么是编写格式量的未来证明方式?

现在,我能想到的唯一方法是将culture-database复制到我的数据库.

c# format currency cultureinfo

5
推荐指数
1
解决办法
1182
查看次数

何时在C#中使用Assert.AreEqual()比较字符串时传递Culture

我遇到过其他开发人员编写的一些单元测试,这些测试经常使用Assert.AreEqual像这样的重载版本:

 Assert.AreEqual(stringparamX, stringParamY, true, CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

stringParamX在单元测试中设置,并且stringparamY将是被测系统的结果.

可能会将此代码移植到其他国家/地区,并且可以执行这些测试.但是,在查看MSDN文档文档时,我不禁想到传入CultureInfo.InvariantCulture这里会增加一些不必要的复杂性.如果在其他文化中执行,我不确定它会对测试产生什么样的影响.

在我的情况下,在单元测试的上下文中,我为什么要(或不)写这样的断言?

c# unit-testing cultureinfo

5
推荐指数
1
解决办法
364
查看次数

PowerShell-Set-Culture似乎没有任何改变

我有一个Cloud Service Web角色,需要在其上运行一些PowerShell,以确保始终在正确的区域性中设置服务器:en-AU。

原因是Microsoft可以随时重置文化价值观。

当我跑步时:

Get-Culture
Run Code Online (Sandbox Code Playgroud)

我得到:

1033             en-US            English (United States)
Run Code Online (Sandbox Code Playgroud)

因此,我运行:

Set-Culture en-AU
Run Code Online (Sandbox Code Playgroud)

但是我仍然得到:

1033             en-US            English (United States)
Run Code Online (Sandbox Code Playgroud)

我尝试了很多事情,但似乎没有什么改变真正的文化。

任何帮助都会很棒。

powershell cultureinfo azure

5
推荐指数
2
解决办法
1623
查看次数