Как определить дату однажды до данной даты в Java?

Ваша библиотека

Вот небольшой рефакторинг вашего класса:

# Petite classe pour récupérer le jour et l'heure en Français
class JourFrancais
  JOURS = {"Monday"=>"Lundi", "Tuesday"=>"Mardi", "Wednesday"=>"Mercredi", "Thursday"=>"Jeudi", "Friday"=>"Vendredi", "Saturday"=>"Samedi", "Sunday"=>"Dimanche"}

  def self.jourj(time = Time.now)
    jour = JOURS[time.strftime('%A')]
    "Nous sommes le #{jour} " + time.strftime("%d/%m/%Y et il est %H:%M.")
  end
end 

puts JourFrancais.jourj
# "Nous sommes le Dimanche 17/03/2019 et il est 21:14."
puts JourFrancais.jourj(Time.local(2017, 3, 1, 12, 35))
# "Nous sommes le Mercredi 01/03/2017 et il est 12:35."

Нет необходимости в цикле, метод теперь возвращает строку, а не просто отображает ее, и вы можете указать время.

С помощью Rails i18n

В Rails вы можете скачать fr.yml - config/locales/ и добавить config.i18n.default_locale = :fr в config/application.rb.

Вам больше не нужна ваша библиотека!

I18n.l Time.now, format: :long
# => "dimanche 17 mars 2019 21h23"
15
задан Jon Seigel 4 May 2010 в 00:48
поделиться

4 ответа

Используйте интерфейс Календаря.

Calendar cal = Calendar.getInstance();
cal.setTime(myDate);
cal.add(Calendar.DAY_OF_YEAR,-1);
Date oneDayBefore= cal.getTime();

Выполнение «сложения» таким образом гарантирует получение правильной даты. Это также верно для 1-го года, например, если myDate - 1 января 2012 года, oneDayBefore будет 31 декабря 2011 года.

46
ответ дан 1 December 2019 в 00:01
поделиться

Вы также можете использовать Joda-Time , очень хорошую библиотеку Java для манипулирования датами:

DateTime result = dt.minusDays(1);
​​
8
ответ дан 1 December 2019 в 00:01
поделиться

Класс java.util.Calendar позволяет нам добавить или вычтите любое число дней / недель / месяцев / независимо от даты. Просто используйте метод add ():

http://java.sun.com/j2se/1.5.0/docs/api/java/util/Calendar.html

Пример:

Calendar date = new GregorianCalendar(2009, 3, 1);
date.add(Calendar.DATE, -1);
3
ответ дан 1 December 2019 в 00:01
поделиться
import java.util.Calendar;
import java.util.GregorianCalendar;
import static java.util.Calendar.*;


public class TestDayBefore {

    public static void main(String... args) {
        Calendar calendar = GregorianCalendar.getInstance();
        calendar.set(YEAR, 2009);
        calendar.set(MONTH, MARCH);
        calendar.set(DAY_OF_MONTH, 1);
        System.out.println(calendar.getTime()); //prints Sun Mar 01 23:20:20 EET 2009
        calendar.add(DAY_OF_MONTH, -1);
        System.out.println(calendar.getTime()); //prints Sat Feb 28 23:21:01 EET 2009

    }
}
1
ответ дан 1 December 2019 в 00:01
поделиться
Другие вопросы по тегам:

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