Похоже, вы понимаете, как работают интерфейсы, но не уверены в том, когда их использовать и какие преимущества они предлагают. Вот несколько примеров, когда интерфейс имел бы смысл:
// if I want to add search capabilities to my application and support multiple search
// engines such as google, yahoo, live, etc.
interface ISearchProvider
{
string Search(string keywords);
}
, тогда я мог бы создать GoogleSearchProvider, YahooSearchProvider, LiveSearchProvider и т. Д.
// if I want to support multiple downloads using different protocols
// HTTP, HTTPS, FTP, FTPS, etc.
interface IUrlDownload
{
void Download(string url)
}
// how about an image loader for different kinds of images JPG, GIF, PNG, etc.
interface IImageLoader
{
Bitmap LoadImage(string filename)
}
, а затем создать JpegImageLoader, GifImageLoader, PngImageLoader и т. Д.
Большинство надстроек и систем плагинов работают с интерфейсами.
Еще одно популярное использование для шаблона репозитория. Скажем, я хочу загрузить список zip-кодов из разных источников
interface IZipCodeRepository
{
IList<ZipCode> GetZipCodes(string state);
}
, тогда я мог бы создать XMLZipCodeRepository, SQLZipCodeRepository, CSVZipCodeRepository и т. Д. Для моих веб-приложений я часто создаю хранилища XML на ранней стадии, поэтому я могу получить что-то и запустить до того, как база данных Sql будет готова. Когда база данных будет готова, я напишу SQLRepository для замены версии XML. Остальная часть моего кода остается неизменной, так как она работает с интерфейсами.
Методы могут принимать интерфейсы, такие как:
PrintZipCodes(IZipCodeRepository zipCodeRepository, string state)
{
foreach (ZipCode zipCode in zipCodeRepository.GetZipCodes(state))
{
Console.WriteLine(zipCode.ToString());
}
}
Это разница в часовом поясе, прочитайте это .
По-видимому, при использовании new Date()
вы используете текущий часовой пояс, а valueAsDate
принимает GMT dateTime
Изменение кода на что-то вроде этого
console.log(myInput.valueAsDate = new Date(1995, 0, 1,12));
должно работать
Обновление 1
console.log(myInput.valueAsDate = new Date(Date.UTC(1995, 0, 1));
Должно работать во всех часовых поясах.
new Date(1995, 0, 1,12)
работать над земным шаром во все временные зоны? – Ionică Bizău 6 October 2015 в 14:33new Date()
, ваши пользователи получат текущую дату, которая в порядке. Если вы получаете его с сервера, а ваш сайт является глобальным, вы должны заботиться о часовых поясах. поэтому он работает так, как ожидалось, и, возможно, вам не следует искать обходной путь. – trebor 6 October 2015 в 14:59Date.UTC
вещь - хорошее решение. Благодарю. :) – Ionică Bizău 6 October 2015 в 15:05