function formatDate(seconds, dictionary) {
var foo = new Date;
var unixtime_ms = foo.getTime();
var unixtime = parseInt(unixtime_ms / 1000);
var diff = unixtime - seconds;
var display_date;
if (diff <= 0) {
display_date = dictionary.now;
} else if (diff < 60) {
if (diff == 1) {
display_date = diff + ' ' + dictionary.second;
} else {
display_date = diff + ' ' + dictionary.seconds;
}
} else if (diff < 3540) {
diff = Math.round(diff / 60);
if (diff == 1) {
display_date = diff + ' ' + dictionary.minute;
} else {
display_date = diff + ' ' + dictionary.minutes;
}
} else if (diff < 82800) {
diff = Math.round(diff / 3600);
if (diff == 1) {
display_date = diff + ' ' + dictionary.hour;
} else {
display_date = diff + ' ' + dictionary.hours;
}
} else {
diff = Math.round(diff / 86400);
if (diff == 1) {
display_date = diff + ' ' + dictionary.day;
} else {
display_date = diff + ' ' + dictionary.days;
}
}
return display_date;
}
Являются ли методы .net SqlDataReader культуральными инвариантами
blockquote>
SqlDataReader
не используют никакихCultureInfo
или что-то эквивалентное. Он не знает культур.Когда ваши значения хранятся в db как десятичные, SqlDataReader получает это десятичное значение. Как они (string-), представленные в вашем приложении, зависят от того, как вы это делаете: просто с помощью
dataReader["myColumn"].ToString()
будет использоваться ваш текущийCultureInfo
. Если вы хотите другую культуру, вы должны явно указать это.Что произойдет, если они сохранены в varchar и попытаются использовать .GetDecimal ()?
blockquote>Когда они хранятся как строки, у вас есть проблема (по крайней мере, если вы не знаете культуру, с которой были созданы эти строки). Вы должны использовать правильные
CultureInfo
для первого parse эти строки, чтобы получить правильные значения. Но почему бы вам хранить номера как строки в вашем db?