2016-08-17 7 views
0

Я столкнулся с очень странной проблемой, когда стандартный формат даты «месяц/день», как указано в https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx, оказывает по-другому на моей локальной машине, чем на моей лазурной облачных сервисов и веб-сайтов.Формат месяца месяца/дня, отличного от localhost

Культура в этом случае, которая отличается от другого, является «en-AU». На дату 2017-05-04 его следует отразить как 4 May, а на моем компьютере это делает точно. На нашем веб-сайте (облачный сервис azure) и нашем API (лазурный веб-сайт) он отображается как May 4. Странная часть состоит в том, что если я использую «шаблон коротких дат», он отображает 04/05/2017 как на лазурном, так и на локальном. Таким образом, это, по-видимому, характерно только для шаблона «месяц/день».

Я попытался установить

var culture = new CultureInfo("en-AU"); 
Thread.CurrentThread.CurrentCulture = culture; 
Thread.CurrentThread.CurrentUICulture = culture; 

и код форматирования

string.Format(new CultureInfo("en-AU"), "Until {0:M} {0:yyyy}", endDate); 

мне интересно, если его возможно, что версия некоторого определения культуры отличается в лазури, чем на моя локальная машина? Насколько мне известно, они оба работают .net 4.5. Я добавил логические операторы в код, поэтому я могу подтвердить, что культура правильно установлена ​​на строке, в которой выполняется код, но по какой-то причине он просто выводит другое значение в Azure, чем локально.

+0

Я вижу похожие несоответствия и в других областях. Например, для южноафриканской валюты на моей локальной машине я получаю 'R450.00', но на веб-сервере в Azure' R 450.00' (обратите внимание на добавленное пространство). Изменения очень тонкие, но в библиотеке Azure и в библиотеке есть что-то другое, и я не знаю, как ее отслеживать. – Jorin

ответ

1

Я использовал культуру «en-AU» и «en-ZA» как в локальной, так и в лазурной среде. К сожалению, я не сталкивался с проблемой, о которой вы говорили в своем вопросе в обеих средах.

Похоже, формат даты, который вы получаете, - это формат США, который может быть связан с тем, что центр обработки данных, который вы используете для размещения вашего приложения, базируется в США, и ваша дата отформатирована для этой культуры. дать попробовать отформатировать дату, как:

var currentCulture = new CultureInfo("en-AU"); 
var formattedDate = DateTime.Now.ToString("G",currentCulture); 

для Южной африканской культуры, попробуйте следующее:

var currentCulture = new CultureInfo("en-ZA"); 
var formattedCurrency = currency.ToString("C", currentCulture); 
//currency = 100000 then formattedCurrency => R 100 000,00 

удачи .. !!!

+0

Спасибо, но это все еще обеспечивает разные выходные данные на сервере, чем локально для стилей «M» и «C». – Jorin