, В то время как каждый сгенерированный GUID, как гарантируют, не будет уникален, общее количество уникальных ключей (2 128 глоток> или 3.4Г — 10 38 глоток>) является столь большим, что вероятность того же числа, сгенерированного дважды, является очень маленькой. Например, рассмотрите заметную вселенную, которая содержит о 5Г — 10 22 глоток> звезды; каждая звезда могла тогда иметь 6.8Г — 10 15 глоток> универсально уникальные GUID.
От Википедия .
Это некоторые хорошие статьи о том, как GUID сделан (для.NET) и как Вы могли получить тот же гуид в правильной ситуации.
https://ericlippert.com/2012/04/24/guid-guide-part-one /
https://ericlippert.com/2012/04/30/guid-guide-part-two /
https://ericlippert.com/2012/05/07/guid-guide-part-three /
†"вЂ"
взгляните на эту библиотеку date.js http://code.google.com/p/jqueryjs/source/browse/trunk/plugins/methods/date.js
у него есть полезная функция под названием fromString , которая попытается и преобразовать строку (на основе Date.format) в допустимый объект даты.
функция возвращает false, если она не создает допустимый объект даты - затем вы можете попробовать другой формат, прежде чем отказаться, если все вернут false.
вот несколько примеров форматов, которые вы можете протестировать:
Date.format = 'dd mmm yyyy';
alert(Date.fromString("26 Jun 2009"));
Date.format = 'mmm dd yyyy';
alert(Date.fromString("Jun 26 2009"));
Date.format = 'dd/mm/yy';
alert(Date.fromString("26/06/09"));
Date.format = 'mm/dd/yy';
alert(Date.fromString("06/26/09"));
Date.format = 'yyyy-mm-dd';
alert(Date.fromString("2009-06-26"));
Джош
Анализировать даты в произвольном формате (как указывает @Natrium) - ужасно сложная проблема. Это еще более сбивает с толку, если учесть, что европа записывает свои даты как дд / мм / гггг, поэтому вы не можете сказать, 7 февраля 2009 г. - 7 февраля или 2 июля.
Большинство людей решают эту проблему, используя либо datepicker тип управления из библиотеки javascript или с помощью раскрывающихся списков с заданными значениями для месяца, дня и года.
<select name="month">
<option value="1">January</option>
<option value="2">February</option>
...
<option value="12">December</option>
</select>
<select name="day">
<option value="1">1</option>
<option value="2">2</option>
...
<option value="31">31</option>
</select>
<select name="year">
<option value="2000">2000</option>
<option value="2001">2001</option>
...
<option value="2009">2009</option>
</select>
Вы можете использовать регулярное выражение или собственный код. Пример ниже:
function isValidDate(dateStr, format) {
if (format == null) { format = "MDY"; }
format = format.toUpperCase();
if (format.length != 3) { format = "MDY"; }
if ( (format.indexOf("M") == -1) || (format.indexOf("D") == -1) || _
(format.indexOf("Y") == -1) ) { format = "MDY"; }
if (format.substring(0, 1) == "Y") { // If the year is first
var reg1 = /^\d{2}(\-|\/|\.)\d{1,2}\1\d{1,2}$/
var reg2 = /^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$/
} else if (format.substring(1, 2) == "Y") { // If the year is second
var reg1 = /^\d{1,2}(\-|\/|\.)\d{2}\1\d{1,2}$/
var reg2 = /^\d{1,2}(\-|\/|\.)\d{4}\1\d{1,2}$/
} else { // The year must be third
var reg1 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{2}$/
var reg2 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/
}
// If it doesn't conform to the right format (with either a 2 digit year or 4 digit year), fail
if ( (reg1.test(dateStr) == false) && (reg2.test(dateStr) == false) ) { return false; }
var parts = dateStr.split(RegExp.$1); // Split into 3 parts based on what the divider was
// Check to see if the 3 parts end up making a valid date
if (format.substring(0, 1) == "M") { var mm = parts[0]; } else _
if (format.substring(1, 2) == "M") { var mm = parts[1]; } else { var mm = parts[2]; }
if (format.substring(0, 1) == "D") { var dd = parts[0]; } else _
if (format.substring(1, 2) == "D") { var dd = parts[1]; } else { var dd = parts[2]; }
if (format.substring(0, 1) == "Y") { var yy = parts[0]; } else _
if (format.substring(1, 2) == "Y") { var yy = parts[1]; } else { var yy = parts[2]; }
if (parseFloat(yy) <= 50) { yy = (parseFloat(yy) + 2000).toString(); }
if (parseFloat(yy) <= 99) { yy = (parseFloat(yy) + 1900).toString(); }
var dt = new Date(parseFloat(yy), parseFloat(mm)-1, parseFloat(dd), 0, 0, 0, 0);
if (parseFloat(dd) != dt.getDate()) { return false; }
if (parseFloat(mm)-1 != dt.getMonth()) { return false; }
return true;
}
независимо от формата?
это будет сложно ...
Все верно, но все в другом формате. Итак, вне зависимости от формата ... Я серьезно в этом сомневаюсь ...
Я понимаю, что мне нужно пройти проверку кода. Все это хорошие ответы, но они начинали усложняться. Я не хотел загонять себя в угол, поэтому выбрал альтернативный маршрут. Спасибо