我想使用文化名称设置用户日期格式yyyyMMdd.必须指定哪个文化名称才能实现此目的?
我知道如何指定文化、日期格式、时区等......
我的问题是,当您在 C# 中键入 DateTime.Now 或 DateTime.UtcNow 时,它是使用服务器端代码运行所在的 Web 服务器的文化,还是使用 Web 浏览器的客户端语言/文化提出请求?
令我惊讶的是,从我的测试来看,这个服务器代码 DateTime.Now 似乎没有使用 Web 服务器的区域性。但实际上是在网络浏览器中使用客户端 Lang/Cult!?
web.config 中是否有指定 DateTime.Now/UtcNow 默认在我的 Web 服务器区域性中运行?我只希望在专门为客户编写代码时应用客户文化。
假设我们有一个由 angularjs 前端和作为后端的 asp.net wep api 组成的应用程序。
客户在使用 datepicker 时应该使用他的文化(例如:En-US)。当数据将发布到后端时,我在那里有特定的文化(例如:Tr-TR)。
我想要一个系统来处理日期时间格式来轻松管理这种情况。例如,每当客户端向后端发送请求时,我应该从请求中了解他的文化,然后在返回数据之前在序列化时将我的日期转换为该格式。
我应该创建什么类型的系统?
由于我还没有前端代码,我将在 web api 端分享我的文化配置。
设置文化
public class CultureConfig
{
public static void Register()
{
//Get the culture info of the language code
const string uiLanguage = "Tr";//"En-US";
var culture = CultureInfo.CreateSpecificCulture(uiLanguage);
CultureInfo.DefaultThreadCurrentCulture = culture;
CultureInfo.DefaultThreadCurrentUICulture = culture;
}
}
Run Code Online (Sandbox Code Playgroud)
Json 序列化配置:
var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().First();
jsonFormatter.SerializerSettings = new JsonSerializerSettings()
{
ContractResolver = new CamelCasePropertyNamesContractResolver(),
DateFormatHandling = DateFormatHandling.IsoDateFormat,
DateTimeZoneHandling = DateTimeZoneHandling.Unspecified,
Culture = CultureInfo.DefaultThreadCurrentCulture
};
Run Code Online (Sandbox Code Playgroud) 我在堆栈溢出时发现了类似的问题,但它并没有真正回答我的问题.我需要确保我的asp.net应用程序格式化日期dd/mm/yyyy与我的SQL Server 2005相同.
如何验证服务器的日期文化(如果这就是它的名称)与我编写应用程序的方式相符?是否有特定的数据库设置和OS设置?它是特定于表格的吗?我不想转移我的日子和月份.
谢谢
我有个问题
在印度尼西亚,我们通常使用8,5而不是8.5但是当我在文本框中写8,5时它意味着85
怎么解决?我只想用逗号更改点
现在我开始考虑我的ANDROID应用程序的本地化.我在JAVA编码,我正在使用ADT环境.该应用程序应该在完成后以德语和英语运行.我找到了很多关于如何根据设备UI访问字符串,标签图像等资源的好教程.
但是,我需要根据应用程序运行的语言在我的代码中做出DECISIONS.让我举一个简单的例子,说明我想用一些伪代码实现的(仅作为例子):
If ("language-is-german") {
start an audiostream playing a .wav-file saying "Guten morgen lieber Benutzer!!!";
Integer intErgebnis = 2 + 4;
}
Else If ("language-is-english") {
start an audiostream playing a .wav-file saying "Good morning dear user!!!";
Integer intResult = 2 + 9;
}
Run Code Online (Sandbox Code Playgroud)
基本的想法是播放不同的声音文件(我知道你也可以通过指向不同的资源来实现这一点) - 但是它们需要以不同的顺序播放等等.我添加计算只是为了告诉你我真的想要做根据用户计算机上设置的语言不同的东西.
我如何在后面的代码中检查它(即我需要输入什么而不是language-is-german
上面的伪代码?
double test = Convert.ToDouble("39,618840?");
Run Code Online (Sandbox Code Playgroud)
这给了我一个格式异常,我尝试过使用Cultureinfo.invariantculture设置,它也是这样做的.
我有问题用捷克名称排序数组.我有这样的数组:
var myList = new[]
{
"?as revize", "Datum kalibrace", "Chybové kódy"
};
Run Code Online (Sandbox Code Playgroud)
并尝试按如下方式对其进行排序:
CultureInfo culture = new CultureInfo("cs-CZ");
var result = myList.OrderBy(x => x, StringComparer.Create(culture, true));
Run Code Online (Sandbox Code Playgroud)
所以我希望数据排序如下:
"?as revize", "Chybové kódy", "Datum kalibrace"
Run Code Online (Sandbox Code Playgroud)
但它以不同的顺序结束:
"?as revize", "Datum kalibrace", "Chybové kódy"
Run Code Online (Sandbox Code Playgroud) 我找不到给定数字和货币将它们打印到给定文化的字符串的选项。我发现的最接近的东西是decimal.ToString("C", GIVEN_CULTURE)
,但这不会要求货币,并且会假设我正在谈论文化所了解的货币。如果我在欧洲使用美元怎么办?
例如,Javascript 在构建字符串时将请求这两个参数:
GIVEN_STRING.toLocaleString(culture, { style: 'currency', currency: currency })
Run Code Online (Sandbox Code Playgroud)
这是相关的,因为我正在开发的软件可以处理美元和 MXN(墨西哥比索)。我们的网络仪表板显示有关文化的不同符号(Chrome 示例,我认为它在跨浏览器上有所不同):
zh:
es-MX:
我尝试添加culture='fr'
的BigCalendar
,但是,我得到一个错误。
我的代码是:
import moment from "moment";
BigCalendar.momentLocalizer(moment);
export default class Agenda extends Component {
constructor(props){
super(props);
this.state = {
events: [
{
title: 'Calendar 1',
start: new Date(2019, 2, 19, 15, 0, 0), //03:00 PM
end: new Date(2019, 2, 19, 16, 30, 0), //04:30 PM
},
{
title: 'Calendar 2 ',
start: new Date(2019, 2, 20, 12, 30, 0), //08:30 AM
end: new Date(2019, 2, 20, 18, 0, 0), //18:00 PM
},
{
title: 'Calendar 3 …
Run Code Online (Sandbox Code Playgroud) 我正在使用 Asp.Net Core 2.2 Razor Pages 应用程序。我想在应用程序级别设置应用程序文化和日期格式。所以经过一些谷歌搜索后,我最终ConfigureServices
在Startup.cs 的方法中添加了以下代码
public void ConfigureServices(IServiceCollection services)
{
// setting the application culture to en-US with MM/dd/yyyy short date pattern.
var culture = CultureInfo.CreateSpecificCulture("en-US");
var dateformat = new DateTimeFormatInfo { ShortDatePattern = "MM/dd/yyyy", LongDatePattern = "MM/dd/yyyy hh:mm:ss tt" };
culture.DateTimeFormat = dateformat;
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用。我以错误的格式获取日期。例如,
DateTime.Now.ToShortDateString()
返回6/25/2019而不是06/25/2019。同样是问题DateTime.Now.ToLongDateString()
如果我将格式更改为“dd/MM/yyyy”,它会返回25/06/2019的日期吗??
我在本地开发环境中运行它。另外,我期望我的应用程序在任何环境、任何机器、任何文化中以我在上面设置的相同格式获取日期。
请帮助和指导我哪里出错了。
提前致谢!!
culture ×11
c# ×8
datetime ×3
asp.net ×2
android ×1
angularjs ×1
asp.net-core ×1
cultureinfo ×1
currency ×1
date ×1
format ×1
fullcalendar ×1
java ×1
locale ×1
localization ×1
momentjs ×1
razor-pages ×1
reactjs ×1
string ×1
xaml ×1