Как сделать чтобы выводило когда ночь "Сейчас ночь" и день?

Рейтинг: 0Ответов: 2Опубликовано: 03.01.2015

Как сделать чтобы выводило когда ночь "Сейчас ночь" и день?

Код часов:

Date d = new Date(); 
SimpleDateFormat format1 = new SimpleDateFormat("hh:mm");
System.out.println(format1.format(d));

Ответы

▲ 2Принят

Хоть так:

int hours = new Date().getHours();
if (hours >= 23 && hours < 5) {
    System.out.println("Сейчас ночь");
}
▲ 1

Можно так:

1) Определить интерфейсы

для определения сообщения

public interface DayInfoMessageProvider{

    public int getCurrentHour();

    public void setCurrentHour(int currentHour);

    public String getDayInfo();
}

для вывода сообщения

public interface MessageRenderer {

   public void render();

   public DayInfoMessageProvider getDayInfoMessageProvider();

   public void setDayInfoMessageProvider(DayInfoMessageProvider dayInfoMessageProvider);
}

2) Определим их реализации:

public class StandartDayInfoMessageProvider implements DayInfoMessageProvider {

private int currentHour;
private static final String NIGHT_NOTIFY = "Сейчас ночь";
private static final String DAY_NOTIFY = "Сейчас день";

@Override
public int getCurrentHour() {
    return currentHour;
}

@Override
public void setCurrentHour(int currentHour) {
    this.currentHour = currentHour;
}

@Override
public String getDayInfo() {
    if (currentHour >= 23 && currentHour < 5) {
        return NIGHT_NOTIFY;
    }
    else {return DAY_NOTIFY;}
}
}

и

public class StandartMessageRenderer implements MessageRenderer {

private DayInfoMessageProvider provider;

@Override
public void render() {
    System.out.println(provider.getDayInfo());    
}

@Override
public DayInfoMessageProvider getDayInfoMessageProvider() {
    return provider;
}

@Override
public void setDayInfoMessageProvider(DayInfoMessageProvider dayInfoMessageProvider) {
    this.provider = dayInfoMessageProvider;
}
}

3)Определить фабричные классы (реализация самая простая и должна расшириться, либо использоваться IoC контейнер):

public class MessageRendererFactory {

public static MessageRenderer createMessageRenderer(){
    return new StandartMessageRenderer();
}
}

и

public class MessageProviderFactory {
public static DayInfoMessageProvider createMessageProvider(){
    return new StandartDayInfoMessageProvider();
}
}

4) Клиентский код будет выглядеть так:

DayInfoMessageProvider provider =  MessageProviderFactory.createMessageProvider();
    provider.setCurrentHour(Calendar.getInstance().get(Calendar.HOUR_OF_DAY));

    MessageRenderer renderer = MessageRendererFactory.createMessageRenderer();
    renderer.setDayInfoMessageProvider(provider);
    renderer.render();