Поставщик данных .NET - относительный путь по умолчанию - стандартное соединение
using System.Data.SqlClient;
var conn = new SqlConnection();
conn.ConnectionString =
"Data Source=.\SQLExpress;" +
"User Instance=true;" +
"User Id=UserName;" +
"Password=Secret;" +
"AttachDbFilename=|DataDirectory|DataBaseName.mdf;"conn.Open();
Поставщик данных .NET - относительный путь по умолчанию - доверенное соединение
using System.Data.SqlClient;
var conn = new SqlConnection();
conn.ConnectionString =
"Data Source=.\SQLExpress;" +
"User Instance=true;" +
"Integrated Security=true;" +
"AttachDbFilename=|DataDirectory|DataBaseName.mdf;" conn.Open();
. NET Поставщик данных - Пользовательский относительный путь - Стандартное соединение
using System.Data.SqlClient;
AppDomain.CurrentDomain.SetData(
"DataDirectory", "C:\MyPath\");
var conn = new SqlConnection();
conn.ConnectionString =
"Data Source=.\SQLExpress;" +
"User Instance=true;" +
"User Id=UserName;" +
"Password=Secret;" +
"AttachDbFilename=|DataDirectory|DataBaseName.mdf;" conn.Open();
Поставщик данных .NET - Пользовательский относительный путь - Надежное соединение
using System.Data.SqlClient;
AppDomain.CurrentDomain.SetData(
"DataDirectory", "C:\MyPath\");
var conn = new SqlConnection();
conn.ConnectionString =
"Data Source=.\SQLExpress;" +
"User Instance=true;" +
"Integrated Security=true;" +
"AttachDbFilename=|DataDirectory|DataBaseName.mdf;" conn.Open();
Я столкнулся с аналогичной проблемой с модульными тестами (особенно в шутке, когда модульные тесты запускаются локально для создания моментальных снимков, а затем сервер CI запускает (потенциально) другой часовой пояс, что приводит к сбою сравнения моментальных снимков). Я издевался над нашими Date
и некоторыми вспомогательными методами:
describe('...', () => {
let originalDate;
beforeEach(() => {
originalDate = Date;
Date = jest.fn(
(d) => {
let newD;
if (d) {
newD = (new originalDate(d));
} else {
newD = (new originalDate('2017-05-29T10:00:00z'));
}
newD.toLocaleString = () => {
return (new originalDate(newD.valueOf())).toLocaleString("en-US", {timeZone: "America/New_York"});
};
newD.toLocaleDateString = () => {
return (new originalDate(newD.valueOf())).toLocaleDateString("en-US", {timeZone: "America/New_York"});
};
newD.toLocaleTimeString = () => {
return (new originalDate(newD.valueOf())).toLocaleTimeString("en-US", {timeZone: "America/New_York"});
};
return newD;
}
);
Date.now = () => { return (Date()); };
});
afterEach(() => {
Date = originalDate;
});
});
Вы можете указать смещение часового пояса на new Date()
, например:
new Date('Feb 28 2013 19:00:00 EST')
или
new Date('Feb 28 2013 19:00:00 GMT-0500')
Поскольку Date
сохраняет время UTC (т. е. getTime
возвращается в UTC), javascript преобразует время в UTC, и когда вы вызываете такие вещи, как toString
, javascript преобразует время UTC в локальный часовой пояс браузера и возвращает строку в локальном часовом поясе, то есть, если я использую UTC+8
:
> new Date('Feb 28 2013 19:00:00 GMT-0500').toString()
< "Fri Mar 01 2013 08:00:00 GMT+0800 (CST)"
Также вы можете использовать обычный метод getHours/Minute/Second
:
> new Date('Feb 28 2013 19:00:00 GMT-0500').getHours()
< 8
(Этот параметр 8
означает, что после преобразования времени в мое местное время - UTC+8
, число часов - 8
.)
Попробуйте: date-from-timezone , он разрешает ожидаемую дату с помощью изначально доступных Intl.DateTimeFormat
.
Я использовал этот метод в одном из моих проектов в течение нескольких лет уже, но теперь я решил опубликовать его как небольшой проект ОС:)
Объект JavaScript Date
JavaScript отслеживает время в UTC внутренне, но обычно принимает вход и выход в локальное время компьютера, на котором он запущен. У этого нет никаких средств для работы со временем в других часовых поясах. Вы можете анализировать и выводить даты, которые являются UTC или Local, но вы не можете напрямую работать с другими часовыми поясами.
Чтобы быть абсолютно точным, внутреннее представление объекта Date
- это единственное число, представляя количество миллисекунд, прошедших с момента 1970-01-01 00:00:00 UTC
, независимо от секунд прыжка. В объекте Date нет часового пояса или строкового формата. Когда используются различные функции объекта Date
, локальный часовой пояс компьютера применяется к внутреннему представлению. Если функция выдает строку, тогда локальная информация компьютера может быть принята во внимание, чтобы определить, как создать эту строку. Информация зависит от каждой функции, а некоторые из них специфичны для реализации.
К счастью, есть библиотеки, которые могут это сделать. Они реализуют стандартную базу данных о часовых поясах Olson / IANA в JavaScript. У некоторых есть накладные расходы, если вы работаете в веб-браузере, так как база данных может быть немного большой, если вы хотите все это. К счастью, многие из этих библиотек позволяют выборочно выбирать зоны, которые вы хотите поддерживать, делая размер данных более приемлемым. Некоторые из них используют современные функции для получения данных о часовых поясах из API Intl
, а не для их отправки.
Для этого есть несколько библиотек:
Luxon, вероятно, является самой безопасной ставкой для всего современного использования и является самым легким весом, поскольку он использует API Intl
для его данные о часовом поясе.
Момент-часовой пояс является расширением moment.js и приводит к его собственным данным часового пояса.
js-joda - это JavaScript реализация Joda-Time API (с Java) и включает поддержку часового пояса через отдельный модуль.
BigEasy / TimeZone также находится на правильном пути.
WallTime- js достиг конца жизни , а владельцы мигрируют в момент-время.
TimeZoneJS был вокруг самого длинного, но, как известно, имеют некоторые давние ошибки, особенно при переходах на летнее время. Надеюсь, они будут исправлены в какой-то момент в будущем.
tz.js также существует некоторое время, но не очень хорошо документировано, IMHO.
Вы должны оценить эти библиотеки, чтобы увидеть, что будет отвечать вашим потребностям. Если вы не уверены, перейдите с моментом / моментом-временем.
Если вы можете ограничить свое использование в современных веб-браузерах, теперь вы можете сделать следующее без каких-либо специальных Библиотеки:
new Date().toLocaleString("en-US", {timeZone: "America/New_York"})
Это не комплексное решение, но оно работает для многих сценариев, которые требуют только преобразования вывода (от UTC или местного времени до определенного часового пояса, но не в другом направлении). Это часть API интернационализации ECMAScript (ECMA-402). Подробнее см. В этой записи . Эта таблица совместимости отслеживает, какие версии поддерживаются. Это API Intl
, упомянутый выше, что некоторые библиотеки теперь используют внутренне.
var date_time = new Date()
, значение date_time
(для меня в AEST) Date {Sun Aug 21 2016 22:18:47 GMT+1000 (AEST)}
, и поэтому кажется, что имеет i> хранит часовой пояс. Как я могу обеспечить date_time
чисто время UTC без включения часового пояса?
– user1063287
21 August 2016 в 12:22
Столкнулся с той же проблемой, использовал этот
Console.log (Date.parse («13 июня 2018 10:50:39 GMT + 1»));
Он вернет миллисекунды, к которым вы можете проверить, есть +100 timzone intialize британское время Надеюсь, что это поможет !!
Я знаю его 3 года слишком поздно, но, может быть, он может помочь кому-то другому, потому что я нашел что-то подобное, кроме библиотеки времени и времени, что не совсем то же самое, что и просьбы здесь.
ive сделал что-то подобное для немецкого часового пояса, это немного сложно из-за летнего времени и високосных лет, когда у вас есть 366 дней.
ему может потребоваться небольшая работа с функцией isDaylightSavingTimeInGermany, разные временные интервалы изменяются в разное время перехода на летнее время.
в любом случае, посмотрите эту страницу: https://github.com/zerkotin/german-timezone-converter/wiki
основными методами являются: convertLocalDateToGermanTimezone convertGermanDateToLocalTimezone
ive прилагает усилия к документированию, поэтому он не будет настолько запутанным.