如何查询数据库文化(SQL Server 2005)?
我在插入和获取日期时遇到问题,因为客户端的服务器与我的开发人员服务器不同.
我可以调整日期,但我需要了解服务器的文化......
在我的Windows服务中,Spring.NET创建了一些处理作业的线程.是否有可能确保所有这些线程都是以特定文化开始的?或者我必须在每个线程中设置文化?
在ASP.NET中,您可以在应用程序级别设置文化(web.config中的全球化标记)...这可以在Windows窗体/ Windows服务中完成吗?
我有一个项目,其中嵌入了一些文件,其中两个以.SMS.something
. 编译项目时,即使我没有指定要使用附属程序集的任何地方,也会生成“SMS”文化的附属程序集,它甚至是一种文化吗?
我已经到处寻找解释,但我不知所措。我发现的唯一事情是人们试图将实际文化的资源程序集嵌入到他们的可执行文件中,但这不是我的情况。我只想让我所有的嵌入式资源(只有一种语言)都在同一个程序集中。
如何防止这种自动生成附属程序集,或指定 SMS 不是一种文化?
我有来自WebService的以下字符串"1.4.2013. 0:00:00"
.我希望从中获得DateTime
对象string
.到目前为止我尝试了什么:
string d = "1.4.2013. 00:00:00";
DateTime parsed = DateTime.ParseExact(d, "d",CultureInfo.CreateSpecificCulture("hr-HR"));
DateTime parsed = DateTime.ParseExact(d, "d",new CultureInfo("hr-HR"));
DateTime parsed = DateTime.ParseExact(d, "d", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
它告诉我
string不被识别为有效的dateTime字符串.
我想在没有字符串解析的情况下解决这个问题,例如:在年后删除点.
我需要以DateTime
不同的文化格式转换值,无论系统中设置什么。
没有选择任何特定的时区进行转换,任何区域性格式都使用转换日期时间值。
DateTimeFormatInfo ukDtfi = new CultureInfo(CultureInfo.CurrentCulture.ToString(), false).DateTimeFormat;
StartingDate = Convert.ToDateTime(System.Web.HttpContext.Current.Session["StartDate"].ToString(), ukDtfi);
Run Code Online (Sandbox Code Playgroud)
我正在使用上面的代码,但它无法正常工作。目前我ar-SA
在我的系统中设置了文化。
我正在尝试使用NUnit对getprice方法进行单元测试.我坚持将rawprice解析为double.我的cultureinfo是,en-US
但我把它设置de-DE
为这个测试.使用numberstyles.any和invariantculture进行双重解析会返回意外结果.
rawprice cultureinfo是未知的,它可以是任何.它运行的服务器也是未知的,可以使用任何语言.
对于这个测试,我尝试使用德语作为原始价格和机器.
我试过解析"9,42"
但结果却是942
.
[Test]
[SetCulture("de-DE")]
public void GetPrice_PriceTextWithCommaDecimal_ReturnsInvariantPrice()
{
var rawPriceText = "9,42";
double.TryParse(rawPriceText, NumberStyles.Any, CultureInfo.InvariantCulture, out double price);
//parsed price result is 942
...
}
Run Code Online (Sandbox Code Playgroud) 我运行的是 Windows 10。当我从开始菜单中打开“区域和语言设置”时,我可以选择“国家或地区”。我正在尝试在 C# 程序中获取该值。
我在丹麦。我尝试将我的国家/地区更改为德国(参见屏幕截图),但我无法获取返回德国的代码。重新启动计算机没有帮助。
我受此线程启发编写了一些代码。
我的代码如下所示(同时尝试各种事情,获取我能想到的所有地区/文化事物):
private static void Main(string[] args)
{
Thread.CurrentThread.CurrentCulture.ClearCachedData();
Thread.CurrentThread.CurrentUICulture.ClearCachedData();
var thread = new Thread(() => ((Action) (() =>
{
Console.WriteLine("Current culture: {0}", Thread.CurrentThread.CurrentCulture.Name);
Console.WriteLine("Current UI culture: {0}", Thread.CurrentThread.CurrentUICulture.Name);
Console.WriteLine("Installed UI culture: {0}", CultureInfo.InstalledUICulture.Name);
Console.WriteLine("Current region: {0}", RegionInfo.CurrentRegion.ThreeLetterISORegionName);
Console.WriteLine("System default LCID: {0}", GetSystemDefaultLCID());
}))());
thread.Start();
thread.Join();
Console.ReadKey();
}
[DllImport("kernel32.dll")]
private static extern uint GetSystemDefaultLCID();
Run Code Online (Sandbox Code Playgroud)
它输出:
Current culture: en-DK
Current UI culture: en-US
Installed UI culture: en-US
Current region: DNK
System default …
Run Code Online (Sandbox Code Playgroud) 我尝试使用ISO-3166双字母国家代码来创建我的C#文化信息对象,以datetime
根据区域设置格式化我的对象.
如果我尝试:
var cultureInfo = new CultureInfo("FR");
Run Code Online (Sandbox Code Playgroud)
它工作正常,如果我尝试:
var cultureInfo = new CultureInfo("US");
Run Code Online (Sandbox Code Playgroud)
它引发了一个异常:
文化不受支持.参数名称:name US是无效的区域性标识符.
有趣的是,"US"是一个有效的ISO-3166国家代码.
我一直在使用以下设置web.config
我以前的应用程序.
<system.web>
<globalization culture="en-AU" uiCulture="en-AU" />
</system.web>
Run Code Online (Sandbox Code Playgroud)
现在在我的新.net核心项目中,我不知道如何将此设置放在appsettings.json
文件中.
谢谢你的帮助,尼古拉
我准备了一个小型的WPF应用程序:
视图:
View-Model看起来如下:
现在,由于某种原因,斯洛文尼亚文化的日,月和年之间有空格:
我的意思是,在2014年1月14日,我得到的时间是2014年1月14日.
culture ×10
c# ×8
.net ×4
datetime ×4
asp.net-core ×1
country ×1
double ×1
locale ×1
msbuild ×1
parsing ×1
region ×1
sql-server ×1
string ×1
web-config ×1