Оба правильные, но они интерпретируются как даты с двумя разными часовыми поясами. Итак, вы сравнили яблоки и апельсины:
// local dates
new Date("Jul 8, 2005").toISOString() // "2005-07-08T07:00:00.000Z"
new Date("2005-07-08T00:00-07:00").toISOString() // "2005-07-08T07:00:00.000Z"
// UTC dates
new Date("Jul 8, 2005 UTC").toISOString() // "2005-07-08T00:00:00.000Z"
new Date("2005-07-08").toISOString() // "2005-07-08T00:00:00.000Z"
Я удалил вызов Date.parse()
, так как он автоматически используется для строкового аргумента. Я также сравнивал даты с использованием формата ISO8601 , чтобы вы могли визуально сравнивать даты между вашими местными датами и датами UTC. Время разговора составляет 7 часов, что является разницей в часовом поясе и почему ваши тесты показывают две разные даты.
Другим способом создания этих же локальных / UTC-дат будет:
new Date(2005, 7-1, 8) // "2005-07-08T07:00:00.000Z"
new Date(Date.UTC(2005, 7-1, 8)) // "2005-07-08T00:00:00.000Z"
Но я по-прежнему настоятельно рекомендую Moment.js , который как простой, но мощный :
// parse string
moment("2005-07-08").format() // "2005-07-08T00:00:00+02:00"
moment.utc("2005-07-08").format() // "2005-07-08T00:00:00Z"
// year, month, day, etc.
moment([2005, 7-1, 8]).format() // "2005-07-08T00:00:00+02:00"
moment.utc([2005, 7-1, 8]).format() // "2005-07-08T00:00:00Z"
Можно использовать библиотека Dokan для создания виртуального диска. Существует обертка .NET для взаимодействия через интерфейс с C#.
Да, используйте классы в Система. IO.IsolatedStorage
Содержание Моего Компьютера может включать Расширения Пространства имен Shell. Эти COM-объекты выполняются в основном процессе Проводника, также, как и много других расширений оболочки. Используя C# для таких расширений плохая идея, так как Ваше расширение не может управлять, какую версию CLR Explorer.exe может использовать. И Microsoft позволяет только один CLR для каждого процесса.