Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 有没有按字母顺序排列的人类语言?_Sorting_Culture_Isodate - Fatal编程技术网

Sorting 有没有按字母顺序排列的人类语言?

Sorting 有没有按字母顺序排列的人类语言?,sorting,culture,isodate,Sorting,Culture,Isodate,因此,我喜欢ISO格式的日期字符串,即2021-12-25,这意味着您可以只应用简单的排序,并且日期的顺序正确 但有时,把月份看作英语是一件好事,而不是试图记住十月是第八个月、第九个月还是第十个月。(也许只有我一个人) 所以2021年12月25日读起来很好,但我失去了那种排序质量——这个日期现在会出现在2021年11月25日感恩节之前 所以我想知道是否有一种人类语言可以同时做到这两个方面——在这种语言的字母表中,有一种语言是一月在二月之前出现的吗。例如,法语在这里失败(Janvier>Fevri

因此,我喜欢ISO格式的日期字符串,即2021-12-25,这意味着您可以只应用简单的排序,并且日期的顺序正确

但有时,把月份看作英语是一件好事,而不是试图记住十月是第八个月、第九个月还是第十个月。(也许只有我一个人)

所以2021年12月25日读起来很好,但我失去了那种排序质量——这个日期现在会出现在2021年11月25日感恩节之前

所以我想知道是否有一种人类语言可以同时做到这两个方面——在这种语言的字母表中,有一种语言是一月在二月之前出现的吗。例如,法语在这里失败(Janvier>Fevrier)。

好吧,让我们查询文化:对于每个文化,我们得到月份的名称,并检查它们是否排序(我们将原始名称与排序的名称进行比较)

C#代码:

  var result = CultureInfo
    .GetCultures(CultureTypes.AllCultures)
    .Where(ci => ci.DateTimeFormat
       .MonthNames
       .Where(month => !string.IsNullOrEmpty(month))
       .Where(month => !Regex.IsMatch(month, "^M[0-9]+$"))
       .Any())
    .Where(ci => ci.DateTimeFormat
       .MonthNames
       .Where(month => !string.IsNullOrEmpty(month))
       .SequenceEqual(ci
          .DateTimeFormat
          .MonthNames
          .Where(month => !string.IsNullOrEmpty(month))
          .OrderBy(month => month)))
    .OrderBy(ci => ci.Name)
    .Select(ci => $"{ci.Name} ({ci.EnglishName})");

  Console.Write(string.Join(Environment.NewLine, result)); 
  Empty 
结果:

  var result = CultureInfo
    .GetCultures(CultureTypes.AllCultures)
    .Where(ci => ci.DateTimeFormat
       .MonthNames
       .Where(month => !string.IsNullOrEmpty(month))
       .Where(month => !Regex.IsMatch(month, "^M[0-9]+$"))
       .Any())
    .Where(ci => ci.DateTimeFormat
       .MonthNames
       .Where(month => !string.IsNullOrEmpty(month))
       .SequenceEqual(ci
          .DateTimeFormat
          .MonthNames
          .Where(month => !string.IsNullOrEmpty(month))
          .OrderBy(month => month)))
    .OrderBy(ci => ci.Name)
    .Select(ci => $"{ci.Name} ({ci.EnglishName})");

  Console.Write(string.Join(Environment.NewLine, result)); 
  Empty 
因此,地球上没有这种(幸运的?)文化(至少.Net 5知道)


您可以尝试
缩写月名
月名
,但遗憾的是:输出也将是空的。

我投票结束这个问题,因为这不是编程。您是否要切换UI语言以便对日期进行排序?那有点傻。ISO-8601之所以如此令人敬畏,是因为它与语言无关。尽管这是一个奇怪的问题,但我认为与ISO日期的联系使它在主题上处于边缘。下面的答案当然很好,涉及到编程。我正在投票重新开放。@JohnColeman ISO完全取消了名字,只使用数字,从而完全回避了这个问题。我看不出一个对这个问题的准确答案对任何人都有用的情况。有趣的是,看看哪种文化最接近理想,距离理想的距离是通过排序所需的互换数量来衡量的。