Связь Ajax между клиентом и сервером часто включает данные в формате JSON. В то время как JSON хорошо работает для строк, чисел и логических значений, он может создавать определенные трудности для дат из-за того, как они преобразуются в ASP.NET. Поскольку у них нет специального представления для дат, они сериализуются как простые строки. В качестве решения механизм сериализации по умолчанию ASP.NET Web Forms и MVC сериализует даты в специальной форме - / Date (ticks) / - где тики - это число миллисекунд с 1 января 1970 года.
Эта проблема может быть решена двумя способами:
клиентская сторона
Преобразование полученной строки даты в число и создание объекта даты с использованием конструктора класса даты с параметрами ticks as.
function ToJavaScriptDate(value) {
var pattern = /Date\(([^)]+)\)/;
var results = pattern.exec(value);
var dt = new Date(parseFloat(results[1]));
return (dt.getMonth() + 1) + "/" + dt.getDate() + "/" + dt.getFullYear();
}
серверная сторона
В предыдущем решении используется сценарий на стороне клиента для преобразования даты в объект JavaScript. Вы также можете использовать код на стороне сервера, который сериализует экземпляры .NET DateTime в выбранном вами формате. Для выполнения этой задачи вам необходимо создать свой собственный ActionResult и затем сериализовать данные так, как вы хотите.
ссылка: http://www.developer.com/net/dealing-with-json -dates-в-asp.net-mvc.html
Адаптированный от Не Так Часто Задаваемые Вопросы :
#include <algorithm>
#include <cctype>
#include <string>
std::string data = "Abc";
std::transform(data.begin(), data.end(), data.begin(),
[](unsigned char c){ return std::tolower(c); });
Вы действительно не собираетесь уходить, не выполняя итерации через каждый символ. Нет никакого способа знать, является ли символ нижним регистром или верхним регистром иначе.
, Если Вы действительно ненавидите tolower()
, вот специализированная альтернатива только для ASCII, что я не рекомендую использовать:
char asciitolower(char in) {
if (in <= 'Z' && in >= 'A')
return in - ('Z' - 'z');
return in;
}
std::transform(data.begin(), data.end(), data.begin(), asciitolower);
знать, что tolower()
может только сделать per-single-byte-character замену, которая является неподходящей для многих сценариев, особенно при использовании multi-byte-encoding как UTF-8.
Повышение предоставляет строковый алгоритм для этого :
#include <boost/algorithm/string.hpp>
std::string str = "HELLO, WORLD!";
boost::algorithm::to_lower(str); // modifies str
#include <boost/algorithm/string.hpp>
const std::string str = "HELLO, WORLD!";
const std::string lower_str = boost::algorithm::to_lower_copy(str);