标签: cultureinfo

如何在多国家/语言应用程序中处理时区和日期

我目前正在开发带有后端 SQL Server 数据库的 ac# Web 应用程序。我在日期方面有一些问题需要解决。

该应用程序在 GMT 时间托管在 Web 和数据库服务器上。用户分布在 3 个不同的时区 CEST、MSK、ALMT,随着时间的推移,该网站有可能推广到其他国家。

在目前的代码中,我在 SQL 中使用 DateTime.Now 和 GETDATE(),并且根据服务器的位置,这是 GMT。

我的问题是,考虑到不同的文化等,日期戳应该以什么形式存储在数据库中。应该是 utc 日期吗?下列情况应如何处理?有标准做法吗?

c# sql datetime cultureinfo utc

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

CultureInfo:he-IL 和 he 之间的区别

我想知道语言代码“he-IL”和“he”之间的区别是什么。谢谢您提供任何信息!

.net cultureinfo

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

无论文化信息如何,C# 都解析为日期时间

我在解析某些语言不是英语的日期字符串时遇到问题。示例日期字符串是“8 avril 2016 vendredi”,即英语中的“8 april 2016 friday”。

我试过这个,但没有运气。

DateTime dateTime;
DateTime.TryParse("8 avril 2016 vendredi", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime);
Run Code Online (Sandbox Code Playgroud)

就我而言,日期字符串可以是任何语言,因此我无法在解析时指定文化。
我感谢您的帮助。谢谢。

c# datetime cultureinfo invariantculture

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

如何在C#中使用多语言

我正在尝试准备一个有更多语言的应用程序.我准备了最简单的例子来学习它,我做了很多尝试,但我无法做到.

CultureInfo cul = new CultureInfo("de-De");           
Resources.Culture = new System.Globalization.CultureInfo("de-De");

label1.Text = TestLanguages.Properties.Resources.Saluto;
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,我有两种不同的资源,一种用于意大利语,一种用于德语.

  • 意大利资源:Saluto - > Ciao
  • 德国资源:Saluto - >你好

资源

但我不能使用德国人.我该怎么做?

.net c# multilingual cultureinfo resourcemanager

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

DateTime.TryParse 在不同机器上的工作方式不同

我在我的项目中使用以下代码,但“DateTime.TryParse”在不同的机器上给出不同的结果。IsDate 方法在我的机器上返回“False”,在另一台机器上返回“True”。

if(IsDate("30/03/2020 04:00",out dt))
{
}

private bool IsDate(object o, out DateTime date)
{
    return DateTime.TryParse(o.ToString(), CultureInfo.CurrentCulture, DateTimeStyles.None, out date);
}
Run Code Online (Sandbox Code Playgroud)

我还按照下面的文章尝试了“DateTime.TryParseExact”,但没有用。 https://github.com/dotnet/runtime/issues/25120

请向我提出任何想法以使其正常工作。

谢谢。

c# datetime date cultureinfo winforms

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

获取独立于 CultureInfo.Calendar 的 DateTime

这似乎很容易,但我认为提供优雅的解决方案很棘手。

需要将 UTC 日期时间作为字符串获取 - 但独立于 CultureInfo 设置。在某种程度上具有良好的性能 - 因为它每分钟需要几次。

因此,如果例如 Thread.CurrentThread.CurrentCulture 设置为 Thai,它将打印2020 -10-08 而不是2565 -10-08。

如上所述,寻找一个轻量级的解决方案,我不需要来回更改 Thread.CurrentThread.CurrentCulture。

我试图在下面的单元测试代码中解决这个问题。除其他外,这目前打印

阿拉伯语返回 1442-02-21T13:03:28.0393847Z

泰国返回 2563-10-08T13:03:28.3558814Z

public class UnitTest1
{
    [TestMethod]
    public void TestMethod1()
    {
        Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
        StringBuilder assertionErrors = new StringBuilder();

        // each culture info shall return e.g. 2020-10-08
        var expected = $"{ DateTime.Now.Year}-{ DateTime.Now.Month.ToString().PadLeft(2, '0') }-{ DateTime.Now.Day.ToString().PadLeft(2, '0')}";

        foreach (CultureInfo ci in CultureInfo.GetCultures(CultureTypes.AllCultures))
        {                
            // ARRANGE
            Thread.CurrentThread.CurrentCulture = ci;

            // ACT
            string originalTime = GetEventTime();

            // ASSERT …
Run Code Online (Sandbox Code Playgroud)

c# cultureinfo

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

Asp.Net中的UICulture列表

我在哪里可以找到完整的UICulture列表,如en:English en-us等...

asp.net cultureinfo

0
推荐指数
1
解决办法
1949
查看次数

Datetime.ParseExact在服务器上抛出错误但在客户端上工作

我收到错误'字符串未被识别为有效的DateTime.' 通过使用以下代码.

NewRow["ExpiryDate"] = DateTime.ParseExact(SelectedRow.Cells[9].Text, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture); 
Run Code Online (Sandbox Code Playgroud)

其中selectedRow是数据库的行.代码是在RowCommand事件中编写的.SelectedRow.Cells [9]中的值.文本在客户端采用dd-MM-yyyy格式,因为它在服务器端是不同的.

如何编写适用于所有日期时间格式的通用代码?

c# datetime cultureinfo datetime-format

0
推荐指数
1
解决办法
1611
查看次数

无法使用ParseExact将字符串转换为日期时间

我的XML配置数据文件中有一个这样的字符串(12小时制):

expires="10/27/2014 2:42:57 PM"
Run Code Online (Sandbox Code Playgroud)

我想将该值指定为类的(datetime)成员,如下所示:

 Common.SOExpiries = 
     DateTime.ParseExact(gSet.Attribute("expires").Value, "MM/dd/yyyy hh:mm:ss",    
     CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

但我得到错误'字符串未被识别为有效的DateTime'

我在这做错了什么?

这是在英国顺便说一句,所以CultureInfo应该没问题

.net c# datetime cultureinfo

0
推荐指数
1
解决办法
107
查看次数

ToLower vs ToLowerInvariant

我只是在寻找这两种方法产生不同结果的任何例子.首先,我访问msdn页面,并通过微小的更改运行代码

using System;
using System.Globalization;
using System.Linq;

class Program
{
    static void Main()
    {
        string[] words = { "Tuesday", "Sal?", "???????", "Mardi", 
                         "?????", "Martes", "??? ?????", 
                         "????????", "?????????" };
        Console.BufferHeight = 1000;
        var test = CultureInfo.GetCultures(CultureTypes.AllCultures)
                              .Select(ci =>
                                      {
                                          string[] wordsToLower = words.Select(x => x.ToLower(ci)).ToArray();
                                          string[] wordsToLowerInvariant = words.Select(x => x.ToLowerInvariant()).ToArray();
                                          return new
                                                 {
                                                     Culture = ci,
                                                     ToLowerDiffers = !wordsToLower.SequenceEqual(wordsToLowerInvariant)
                                                 };
                                      })
                              .ToArray();
        foreach (var x in test)
        {
            Console.WriteLine("Culture {0}, ToLower and ToLowerInvariant produces different results: {1}", …
Run Code Online (Sandbox Code Playgroud)

.net c# globalization localization cultureinfo

0
推荐指数
1
解决办法
3928
查看次数