Moment JS - как добраться до полуночи 7 дней назад? [Дубликат]

В то время как , что вызывает NullReferenceExceptions и подходит к avoid / fix , такое исключение было рассмотрено в других ответах, что многие программисты не имеют " t узнал еще, как независимо отлаживать такие исключения во время разработки.

В Visual Studio это обычно легко благодаря Visual Studio Debugger .


Во-первых, убедитесь, что правильная ошибка будет обнаружена - см. . Как разрешить нарушение «Исключение System.NullReferenceException» в VS2010? Примечание1

Затем либо Начать с отладки (F5) , либо Приложить [отладчик VS] к запуску процесса . Иногда может быть полезно использовать Debugger.Break , в котором будет предложено запустить отладчик.

Теперь, когда NullReferenceException выбрано (или необработанно), отладчик остановится ( помните правило, указанное выше?) в строке, на которой произошло исключение. Иногда ошибка может быть легко обнаружена.

Например, в следующей строке единственный код, который может , вызывает исключение, если myString имеет значение null. Это можно проверить, посмотрев окно Watch или выполнив выражения в окне Immediate Window .

var x = myString.Trim();

В более сложных случаях, таких как следуя ниже, вам нужно будет использовать один из методов выше (Watch или Immediate Windows) для проверки выражений, чтобы определить, было ли str1 пустым или если str2 имеет значение null.

var x = str1.Trim() + str2.Trim();

Once , где было выбрано исключение, это обычно тривиально по отношению к разуму назад, чтобы выяснить, где введенное значение null было [неправильно] -

. Найдите время, необходимое для понимания причина исключения. Проверьте нулевые выражения. Проверьте предыдущие выражения, которые могли бы привести к таким нулевым выражениям. Добавьте контрольные точки и, по мере необходимости, пройдите через программу. Используйте отладчик.


1 Если Break on Throws слишком агрессивен и отладчик останавливается на NPE в библиотеке .NET или сторонних разработчиков, Break на User-Unhandled можно использовать для ограничения выловленных исключений. Кроме того, VS2012 представляет Just My Code , который я рекомендую также включить.

Если вы отлаживаете с включенным Just My Code, поведение немного отличается. При включенном Just My Code отладчик игнорирует исключения, связанные с привилегиями обычного языка (CLR) первого шанса, которые выходят за пределы My Code и не проходят через My Code

149
задан Bdfy 26 December 2011 в 16:28
поделиться

6 ответов

var start = new Date();
start.setHours(0,0,0,0);

var end = new Date();
end.setHours(23,59,59,999);

alert( start.toUTCString() + ':' + end.toUTCString() );

Если вам нужно получить время UTC от них, вы можете использовать UTC().

309
ответ дан tvanfosson 4 September 2018 в 07:45
поделиться

Если вас интересуют только временные метки, вы также можете сделать это, что удобно адаптировать для разных интервалов (час: 1000 * 60 * 60, 12 часов: 1000 * 60 * 60 * 12 и т. д.)

const interval = 1000 * 60 * 60 * 24; // 24 hours in milliseconds

let startOfDay = Math.floor(Date.now() / interval) * interval;
let endOfDay = startOfDay + interval - 1; // 23:59:59:9999
2
ответ дан afinemonkey 4 September 2018 в 07:45
поделиться

Используя библиотеку momentjs , это может быть достигнуто с помощью методов startOf() и endOf() объекта текущей даты момента, передавая строку 'day' в качестве аргументов:

Местный GMT:

var start = moment().startOf('day'); // set to 12:00 am today
var end = moment().endOf('day'); // set to 23:59 pm today

Для UTC:

var start = moment.utc().startOf('day'); 
var end = moment.utc().endOf('day'); 
169
ответ дан chridam 4 September 2018 в 07:45
поделиться
function getTime(zone, success) {

    var url = 'http://json-time.appspot.com/time.json?tz=' + zone,
        ud = 'json' + (+new Date());
    window[ud]= function(o){
        success && success(new Date(o.datetime));
    };
    document.getElementsByTagName('head')[0].appendChild((function(){
        var s = document.createElement('script');
        s.type = 'text/javascript';
        s.src = url + '&callback=' + ud;
        return s;
    })());
}

getTime('GMT', function(time){

    // This is where you do whatever you want with the time:
    alert(time);
});

Ссылка: Получение текущего времени по Гринвичу

-7
ответ дан Community 4 September 2018 в 07:45
поделиться

Я предпочитаю использовать библиотеку date-fns для обработки даты. Это действительно отличный модульный и последовательный инструмент. Вы можете получить начало и конец дня следующим образом:

var startOfDay = dateFns.startOfDay;
var endOfDay = dateFns.endOfDay;

console.log('start of day ==> ', startOfDay(new Date('2015-11-11')));
console.log('end of day ==> ', endOfDay(new Date('2015-11-11')));
<script src="https://cdnjs.cloudflare.com/ajax/libs/date-fns/1.29.0/date_fns.min.js"></script>

1
ответ дан Mikhail Shabrikov 4 September 2018 в 07:45
поделиться

Используя библиотеку luxon.js , то же самое можно достичь с помощью методов startOf и endOf, передав параметр «день» в качестве параметра

var DateTime = luxon.DateTime;
DateTime.local().startOf('day').toUTC().toISO(); //2017-11-16T18:30:00.000Z
DateTime.local().endOf('day').toUTC().toISO(); //2017-11-17T18:29:59.999Z
DateTime.fromISO(new Date().toISOString()).startOf('day').toUTC().toISO(); //2017-11-16T18:30:00.000Z

remove .toUTC (), если вам нужно только локальное время

, и вы можете спросить, почему не moment.js , для этого здесь здесь .

2
ответ дан tk120404 4 September 2018 в 07:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: