Все подходы к копированию объектов в Java имеют серьезные недостатки:
Clone
class
(которое вы можете прочитать через getClass()
) и скопировать поля оригинала. Для получения дополнительных сведений о проблемах с clone () см. пункт 11 книги Джошуа Блоха « Эффективная Java, второе издание »
Сериализация
Сериализация еще хуже; он имеет много недостатков clone()
, а затем некоторых. Мое решение
Мое решение добавляет новый интерфейс к моим проектам:
public interface Copyable {
T copy ();
T createForCopy ();
void copyTo (T dest);
}
Мое решение добавляет новый интерфейс к моим проектам:
public interface Copyable {
T copy ();
T createForCopy ();
void copyTo (T dest);
}
Код выглядит так:
class Demo implements Copyable {
public Demo copy () {
Demo copy = createForCopy ();
copyTo (copy);
return copy;
}
public Demo createForCopy () {
return new Demo ();
}
public void copyTo (Demo dest)
super.copyTo (dest);
...copy fields of Demo here...
}
}
К сожалению, мне нужно скопировать этот код ко всем моим объектам, но это всегда один и тот же код, поэтому я могу использовать шаблон редактора Eclipse. Преимущества:
Для стандартных типов Java (например, коллекции и т. д.) ), Я использую класс утилиты, который может их скопировать. Методы имеют флаги и обратные вызовы, поэтому я могу контролировать, насколько глубока копия.
См. strtotime()
strtotime('next tuesday');
Возможно, вы узнали, прошел ли вы прошлый день, посмотрев номер недели:
$nextTuesday = strtotime('next tuesday');
$weekNo = date('W');
$weekNoNextTuesday = date('W', $nextTuesday);
if ($weekNoNextTuesday != $weekNo) {
//past tuesday
}
Извините, я не заметил тег PHP - однако кто-то может быть заинтересован в решении VB:
Module Module1
Sub Main()
Dim d As Date = Now
Dim nextFriday As Date = DateAdd(DateInterval.Weekday, DayOfWeek.Friday - d.DayOfWeek(), Now)
Console.WriteLine("next friday is " & nextFriday)
Console.ReadLine()
End Sub
End Module
, если вы хотите найти понедельник, тогда «dayOfWeek» равен 1, если во вторник он будет 2 и т. д.
var date=new Date();
getNextDayOfWeek(date, 2);
// это для поиска следующий вторник
function getNextDayOfWeek(date, dayOfWeek) {
// Code to check that date and dayOfWeek are valid left as an exercise ;)
var resultDate = new Date(date.getTime());
resultDate.setDate(date.getDate() + (7 + dayOfWeek - date.getDay()) % 7);
return resultDate;
}
Надеюсь, это будет полезно для вас, спасибо
Вы можете использовать библиотеку Carbon.
Пример: на следующей неделе пятница
Carbon::parse("friday next week");
Документация PHP для time () показывает пример того, как вы можете получить дату на одну неделю. Вы можете изменить это, чтобы вместо этого перейти в цикл, который выполняет итерацию максимум 7 раз, каждый раз получает временную метку, получает соответствующую дату и получает день недели.
Вопрос помечен как «php», так как Том сказал, способ сделать это будет выглядеть так:
date('Y-m-d', strtotime('next tuesday'));
Если я правильно вас понимаю, вам нужны даты следующих 7 дней?
Вы можете сделать следующее:
for ($i = 0; $i < 7; $i++)
echo date('d/m/y', time() + 86400 * $i);
Проверить документацию для функции даты для формат, в котором вы хотите.
Я знаю, что это немного поздний ответ, но я хотел бы добавить свой ответ для будущих ссылок.
// Create a new DateTime object
$date = new DateTime();
// Modify the date it contains
$date->modify('next monday');
// Output
echo $date->format('Y-m-d');
Приятно, что вы также можете делать это с датами, отличными от сегодняшних:
// Create a new DateTime object
$date = new DateTime('2006-05-20');
// Modify the date it contains
$date->modify('next monday');
// Output
echo $date->format('Y-m-d');
Чтобы сделать диапазон:
$monday = new DateTime('monday');
// clone start date
$endDate = clone $monday;
// Add 7 days to start date
$endDate->modify('+7 days');
// Increase with an interval of one day
$dateInterval = new DateInterval('P1D');
$dateRange = new DatePeriod($monday, $dateInterval, $endDate);
foreach ($dateRange as $day) {
echo $day->format('Y-m-d')."<br />";
}
Справочник по PHP - DateTime
Руководство PHP - DateInterval
Руководство по PHP - DatePeriod