Я работаю над решением этой проблемы, так как ни один из вышеперечисленных ответов мне не помог. Я работаю с календарем недели jquery и нуждаюсь в моих датах, чтобы иметь информацию о часовом поясе на сервере и локально на странице. После того, как я немного поработал, я решил найти решение, которое может помочь другим.
Я использую asp.net 3.5, vs 2008, asp.net MVC 2 и календарь недели jquery,
Во-первых, я использую библиотеку, написанную Стивеном Левитаном, которая помогает справляться с датами на стороне клиента, библиотекой дат Стивена Левитана . Формат isoUtcDateTime идеально подходит для того, что мне нужно. В моем вызове jQuery AJAX я использую функцию формата, предоставляемую библиотекой с форматом isoUtcDateTime, и когда вызов ajax вызывает мой метод действия, datetime Kind установлен в локальный и отражает время сервера.
Когда я отправьте даты на мою страницу через AJAX, я отправлю их в виде текстовых строк, форматируя даты, используя «ddd, dd MMM yyyy HH»: 'mm': 'ss' GMT'zzzz. Этот формат легко конвертируется на стороне клиента, используя
var myDate = new Date(myReceivedDate);
. Вот мое полное решение минус источник Стива Левитана, который вы можете скачать:
Контроллер:
public class HomeController : Controller
{
public const string DATE_FORMAT = "ddd, dd MMM yyyy HH':'mm':'ss 'GMT'zzzz";
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
public ActionResult About()
{
return View();
}
public JsonResult GetData()
{
DateTime myDate = DateTime.Now.ToLocalTime();
return new JsonResult { Data = new { myDate = myDate.ToString(DATE_FORMAT) } };
}
public JsonResult ReceiveData(DateTime myDate)
{
return new JsonResult { Data = new { myDate = myDate.ToString(DATE_FORMAT) } };
}
}
Javascript:
Надеюсь, этот быстрый пример поможет другим в той же ситуации, в которой я был. В настоящее время он отлично работает с Microsoft JSON Serialization и сохраняет мои даты правильными часовые пояса.
Сценарии оболочки выполняются в подоболочке, и каждая подоболочка имеет свое собственное понятие того, каков текущий каталог. Эти cd
успешно выполняется, но как только подоболочка выходит, Вы вернулись в интерактивной оболочке, и ничто никогда не изменялось там.
Один способ обойти это состоит в том, чтобы использовать псевдоним вместо этого:
alias proj="cd /home/tree/projects/java"
для навигации по каталогам quicky существует $CDPATH, cdargs, и способы генерировать псевдонимы автоматически
http://jackndempsey.blogspot.com/2008/07/cdargs.html
http://muness.blogspot.com/2008/06/lazy-bash-cd-aliaes.html
https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5827311.html
Это только изменяет каталог для самого сценария, в то время как Ваш текущий каталог остается таким же.
Вы могли бы хотеть использовать символьная ссылка вместо этого. Это позволяет Вам делать "ярлык" на файл или каталог, таким образом, необходимо было бы только ввести что-то как cd my-project
.
Можно сделать следующее:
#!/bin/bash
cd /your/project/directory
# start another shell and replacing the current
exec /bin/bash
РЕДАКТИРОВАНИЕ: Это могло быть 'отмечено точкой' также, для предотвращения создания последующих оболочек.
Пример:
. ./previous_script (with or without the first line)
При увольнении сценария оболочки он работает новый экземпляр той оболочки (/bin/bash
). Таким образом Ваш сценарий просто разжигает оболочку, изменяет каталог и выходы. Другими словами, cd
(и другие такие команды) в рамках сценария оболочки не влияют, ни имеют доступ к оболочке, от которой они были запущены.
Идея Jeremy Ruten использовать символьную ссылку инициировала мысль, которая не пересекла никакой другой ответ. Используйте:
CDPATH=:$HOME/projects
ведущее двоеточие важно; это означает что, если будет каталог 'dir' в текущем каталоге, то' cd dir
' изменится на это, а не остановки где-то в другом месте. С набором значений как показано, можно сделать:
cd java
и, если не будет никакого подкаталога, названного Java в текущем каталоге, то это возьмет Вас непосредственно к $HOME/projects/java - никакие псевдонимы, никакие сценарии, никакие сомнительные должностные лица или отметит точкой команды.
Мой $HOME является/Users/jleffler; мой $CDPATH:
:/Users/jleffler:/Users/jleffler/mail:/Users/jleffler/src:/Users/jleffler/src/perl:/Users/jleffler/src/sqltools:/Users/jleffler/lib:/Users/jleffler/doc:/Users/jleffler/work
Вы ничего не делаете неправильно! Вы изменили каталог, но только в подоболочке, которая выполняет сценарий.
можно выполнить сценарий в текущем процессе с "точечной" командой:
. proj
, Но я предпочел бы, чтобы предложение Greg использовало псевдоним в этом простом случае.
Можно объединить псевдоним и сценарий,
alias proj="cd \`/usr/bin/proj !*\`"
при условии, что сценарий echos целевой путь. Обратите внимание, что те - обратные галочки, окружающие название   сценария;
, Например, Ваш сценарий мог быть
#!/bin/bash
echo /home/askgelal/projects/java/$1
, преимущество с этой техникой состоит в том, что сценарий мог взять любое количество параметров командной строки и испустить различные места назначения, вычисленные возможно сложной логикой.
cd
выполняется в оболочке сценария. Когда сценарий завершается, оболочка закрывается, и вы остаетесь в том же каталоге, в котором находились. "Исходный" сценарий, не запускайте его. Вместо:
./myscript.sh
do
. ./myscript.sh
(Обратите внимание на точку и пробел перед именем скрипта.)
Создайте файл сценария
#!/bin/sh # file : /scripts/cdjava # cd /home/askgelal/projects/java
Затем создайте псевдоним в файле запуска.
#!/bin/sh # file /scripts/mastercode.sh # alias cdjava='. /scripts/cdjava'
Например, создайте главный файл псевдонимов / функций: /scripts/mastercode.sh
(Поместите псевдоним в этот файл.)
Затем в конце вашего .bashrc file:
source /scripts/mastercode.sh
Теперь легко перейти с компакт-диска в ваш каталог java, просто введите cdjava, и вы здесь.