标签: cultureinfo

格式化不同文化中的数字

假设文化不变,是否可以以格式定义不同的组分隔符 - 而不是逗号?

Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
Console.WriteLine(String.Format("{0:#,##0}", 2295));
Run Code Online (Sandbox Code Playgroud)

输出:

2,295
Run Code Online (Sandbox Code Playgroud)

期望的输出:

2.295
Run Code Online (Sandbox Code Playgroud)

不变文化是一项要求,因为来自许多不同语言环境的货币使用格式字符串格式化,这些格式字符串是用户定义的.即丹麦他们已经将价格格式定义为"{0:0}, - ",而对于爱尔兰,它可能是"€{0:#,## 0}".

.net c# cultureinfo

4
推荐指数
1
解决办法
8161
查看次数

为会议设定文化

我的应用程序的每个用户都将选择他们的国家/地区,之后它将存储在cookie中并存储以供以后的请求使用.一切都运转正常,但我需要在会议开始时设置文化.我目前正在尝试将web.config中的文化设置为en-GB,然后使用Global.asax覆盖会话到en-US的文化.代码如下

protected void Session_Start(object sender, EventArgs e)
    {
        if (Globals.CountryID == 8)
        {
            Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
            Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-US");
        }
    }
Run Code Online (Sandbox Code Playgroud)

countryID为8,文化在以下代码中设置为en-US.但是,当我导航到设置了ToString("C")的页面时,它仍然以GBP显示,文化仍然是en-GB.

有什么建议?

asp.net cultureinfo uiculture

4
推荐指数
1
解决办法
8318
查看次数

不变的文化

我们正在创建一个将在全世界发布的应用程序,同时导入和导出不同格式的文件.

我们应该将Invariant Culture用于这些标准文件.

然而,不变文化就像EN-US文化一样,而不是真正提供标准的国际写作方式.

话虽这么说,我想至少改变这种文化的日期格式.但是下面的代码只会抛出异常:

CultureInfo format = System.Globalization.CultureInfo.InvariantCulture;
format.DateTimeFormat.FullDateTimePattern = "yyyy'-'MM'-'dd' 'HH':'mm':'ss";
return format;
Run Code Online (Sandbox Code Playgroud)

使用IFormatProvider格式化任何类型变量的正确方法是什么,但是具有编写日期的国际方式?

c# globalization cultureinfo

4
推荐指数
1
解决办法
7760
查看次数

WP7 - 确定文化是英制的还是公制的

我正在尝试确定用户是否更喜欢我的应用中的公制或英制单位.

反正有没有这样做?我一直在尝试使用CultureInfo无济于事.

干杯,

卡梅伦.

localization cultureinfo windows-phone-7

4
推荐指数
1
解决办法
302
查看次数

如何指定XAML值(例如转换器参数)文化

当我们在XAML中使用静态双精度值时,我们如何指定它们以哪种格式提供?

例:

<Rectangle>
  <Rectangle.Opacity>
    <Binding Path="IsDimmed" Converter="{StaticResource boolToDoubleConverter}" ConverterParameter="0.8"/>
  </Rectangle.Opacity>
</Rectangle>
Run Code Online (Sandbox Code Playgroud)

用转换器方法

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
   return double.Parse((string)parameter, culture);
}
Run Code Online (Sandbox Code Playgroud)

问题是在小数分隔的机器上,,转换方法失败或返回错误的值.

我不想设定的InvariantCulture的的Parse()方法,因为转换器可能在某些地方被用来分析用户的输入,这就是为什么culture参数应该仍然适用.

如果我将值指定为资源<sys:Double x:Key="dimValue">0.8</sys:Double>,则converter参数将变为double类型,但在解析之前会转换为字符串.

所以我想以某种方式指定,该值以en-GB格式表示,如ConverterParameter="0.8" ConverterParameterCulture="en-GB"/>.

这可能不需要创建一个浮肿的MultiValueConverter吗?

c# wpf xaml cultureinfo

4
推荐指数
2
解决办法
2826
查看次数

OwinMiddleware不保留.net 4.6中的文化变化.*

我有一个非常好的owin文化中间件.

它只是根据网址改变文化.这完全适用于4.5.*.现在当runtiome更改为4.6.1时,文化不再保留,因此它不起作用.

我可以在一个非常简单的解决方案中重现它,只有这个中间件模拟文化变化

public class CultureMiddleware : OwinMiddleware
{
    public CultureMiddleware(OwinMiddleware next)
        : base(next)
    {
    }

    public override async Task Invoke(IOwinContext context)
    {
        var culture = new CultureInfo("es-ES");
        Thread.CurrentThread.CurrentCulture = culture;
        Thread.CurrentThread.CurrentUICulture = culture;

        CultureInfo.CurrentCulture = culture;
        CultureInfo.CurrentUICulture = culture;


        await Next.Invoke(context);
    }
}
Run Code Online (Sandbox Code Playgroud)

我将中间件附加到它执行的管道但是当我调用一个动作时,控制器没有文化(就像在.net 4.5.1中那样)

我已经在这里发布了,但支持非常慢.每两周一次回答然后看起来他们没有尝试过他们写的东西:-(

https://connect.microsoft.com/VisualStudio/feedback/details/2455357

asp.net-mvc cultureinfo owin owin-middleware .net-4.6

4
推荐指数
1
解决办法
787
查看次数

C#、日期时间格式、mont 名称、cultureinfo

我目前正在开发一个小程序,我想根据cultureinfo清楚地显示日期和时间,如下所示: 2017年3月3日星期日上午7:46:57

但是,我希望可以选择任何国家/地区,并根据他们编写日期的方式获取日期输出。以丹麦为例,我想显示: Søndag, 3. marts 2017 7:46:57(<-- 晚上会是 '19:46:57')

请注意,“ 3 ”位于月份名称的另一侧。

我可以使用 CultureInfo.GetCultures 获取所有文化信息,没问题,但是当我显示日期时间时,我使用 MyDateTime.ToString(MyCultureInfo) 得到“Sunday 3/12/2017 7:46:57 AM”;

我知道如何提取月份名称,并且我可以手动构建一个字符串,其中所有这些数据都以我想要的方式显示我所知道的文化,但我不能代表我不知道的文化。如果有人选择“中文”或“阿拉伯语”,我不知道该显示什么。

我在想是否有某种方法可以在任何文化的正确位置获得带有月份名称的完整日期?

c# datetime cultureinfo

4
推荐指数
1
解决办法
5937
查看次数

文化 缩写月份名称有时以句点结尾

对于 a CultureInfo,调用DateTimeFormat.AbbreviatedMonthNames返回一个数组,其中每个月以 a 结尾,.例如['jan.',... 'dis.']

这种情况不会发生在构建服务器上,也不会发生在所有开发人员计算机上,只是部分计算机上会发生。CurrentCulture和机器位置/语言的设置似乎没有相关性。

选择这一点的测试是针对西班牙文化的,包括明确地CultureInfo为西班牙语创建一个。所以我本以为这些信息是硬编码在某个地方并且只是被读出,据我所知是这样。正在读取CultureData.AbbreviatedMonthNames(calendarId)

更新:经过进一步调查,似乎如果启动时的当前文化是那么en-GB就没有时期。如果有en-US那就有。显式设置CurrentCulture没有任何效果,只是在启动时有所不同。

c# culture cultureinfo

4
推荐指数
1
解决办法
1184
查看次数

如何按德语电话簿字母表对字符串进行排序

我正在尝试使用德语字母表的电话簿排序对字符串列表进行排序。在德语字母排序中,特殊字符或变音符号由以下表示:

\n\n
    \n
  1. \xc3\x84 -> ae
  2. \n
  3. \xc3\x96 -> oe
  4. \n
  5. \xc3\x9c -> ue
  6. \n
\n\n

因此,升序排序最终应该是这样的:

\n\n
    \n
  1. 广告
  2. \n
  3. \xc3\x84
  4. \n
  5. AF
  6. \n
\n\n

我在 C# 领域工作,一直在使用 CultureInfo 创建一个新的字符串比较器进行排序。使用它,我得到以下命令:

\n\n
    \n
  1. \xc3\x84
  2. \n
  3. 广告
  4. \n
  5. AF

    \n\n
    List<string> l = new List<string>();\nl.Add("Ad");\nl.Add("\xc3\x84");\nl.Add("Af");\n\nvar comparer = StringComparer.Create(CultureInfo.CreateSpecificCulture("de"), true);\nvar x = l.OrderBy(y => y, comparer);\n\nforeach(var outp in x) {\n    Console.WriteLine(outp);\n}\n
    Run Code Online (Sandbox Code Playgroud)
  6. \n
\n\n

有谁知道我如何使用自定义比较器或使用现有的文化比较器来做到这一点?

\n

c# sorting cultureinfo

4
推荐指数
1
解决办法
1288
查看次数

如何使用TypeConverter转换特定于文化的double?

TypeConverter班上有问题.它适用于CultureInvariant值,但不能转换特定的文化,如英语千位分隔符.下面是一个我无法开展工作的小型测试程序.

这是问题:) - ConvertFromString使用以下消息抛出异常"2,999.95不是Double的有效值." 并且内部异常"输入字符串格式不正确"..

using System;
using System.Globalization;
using System.ComponentModel;

class Program
{
    static void Main()
    {
        try
        {
            var culture = new CultureInfo("en");
            var typeConverter = TypeDescriptor.GetConverter(typeof(double));
            double value = (double)typeConverter.ConvertFromString(
                null, 
                culture, 
                "2,999.95");

            Console.WriteLine("Value: " + value);
        }
        catch (Exception e)
        {
            Console.WriteLine("Error: " + e.Message);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:链接到Connect上的错误报告

.net c# cultureinfo

3
推荐指数
1
解决办法
4759
查看次数