Как кодировать алгоритм Shabbat Sunset для любой пятницы в Java?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как кодировать алгоритм Shabbat Sunset для любой пятницы в Java?

Сообщение Anonymous »

Как кодировать алгоритм Shabbat Sunset для любой пятницы в Java?
Shabbat Sunset - это когда солнце на 8 ° ниже, чем горизонт, а затем на 18 минут раньше. < /p>
Этот вопрос был задан до < /strong> без результата, как написать альгорит без внешней библиотеки или веб -сервиса. Объяснение с этого сайта:
https://en.wikipedia.org/wiki/sunrise_e ... n_on_earth написанаpublic enum City
{
BERLIN("Berlin", "Germany", 52.52, 13.405, "Europe/Berlin", 34.0);

private String cityname;
private String countryname;
public double latitude;
public double longitude;
public String zoneId;
public double elevationInMeters;

City(String cityname, String countryname, double latitude, double longitude,
String zoneId, double elevationInMeters)
{
this.cityname = cityname;
this.countryname = countryname;
this.latitude = latitude;
this.longitude = longitude;
this.zoneId = zoneId;
this.elevationInMeters = elevationInMeters;
}

public String getInfo()
{
StringJoiner info = new StringJoiner(" ");
info.add(countryname);
info.add(cityname);
info.add(String.valueOf(latitude));
info.add(String.valueOf(longitude));
info.add(String.valueOf(zoneId));
return info.toString();
}
}
< /code>
и < /p>
package sunny;

import java.time.Duration;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;

public class Test
{
public static void main(String[] args)
{
City cityAsked = City.BERLIN;
LocalDateTime dayAsked = LocalDateTime.of(2025, 7, 25, 0, 0);

LocalDateTime start = LocalDateTime.of(2000, 1, 1, 12, 0);
double n = Duration.between(start, dayAsked).toDays(); // Julian day duration

double jStar = n - (cityAsked.longitude / 360.0); // mean solar time

double M = (357.5291 + 0.98560028 * jStar) % 360; // solar mean anomaly

double C = 1.9148 * Math.sin(M) + 0.0200 * Math.sin(2.0 * M)
+ 0.0003 * Math.sin(3.0 * M);// equation of the center

double lambda = (M + C + 180 + 102.9372) % 360;// ecliptic longitude

double jTransit = 2451545.0 + jStar + 0.0053 * Math.sin(M)
+ 0.0069 * Math.sin(2.0 * lambda); // solar transit = solar noon

double sinDelta = Math.sin(lambda) * Math.sin(23.4397); // declination of
// the sun

double cosOmegaNull = Math.sin(0.833+(-2.076*Math.sqrt(cityAsked.elevationInMeters)/60))
- Math.sin(cityAsked.latitude) * sinDelta; // hour angle

double omegaNull = Math.cos(cosOmegaNull);

double jSunset = jTransit + omegaNull / 360.0; // sunset in Julian days

double daysSunset = (long) jSunset;
double daysFraction = jSunset - daysSunset;

LocalDateTime result = dayAsked.plusMinutes((long) (daysFraction * 24.0 * 60.0));
ZonedDateTime adjustedResult = result.atZone(ZoneId.of("Europe/Berlin"));
LocalDateTime jewishSundown = LocalDateTime.from(result)
.minusMinutes((long) (adjustedResult.getOffset().getTotalSeconds() / 60.0)).minusMinutes(18L);

System.out.println(n);
System.out.println(jSunset);
System.out.println(daysSunset);
System.out.println(daysFraction);
System.out.println(result);
System.out.println(adjustedResult);
System.out.println(jewishSundown);
}
}
< /code>
Код приводит к немного раз, что, конечно, недостаточно.
Для сравнения: < /p>
11 июля Sunset = световые свечи 21:08
my code: 20:52 Ohcclock < /p>
< /> < /p>

< /> < /p>

< /> < /p>
package sunny;

import java.time.Duration;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;

public class Test
{
public static void main(String[] args)
{
City cityAsked = City.BERLIN;
LocalDateTime dayAsked = LocalDateTime.of(2025, 7, 25, 0, 0);

LocalDateTime start = LocalDateTime.of(2000, 1, 1, 12, 0);
double n = Duration.between(start, dayAsked).toDays(); // Julian day duration

double jStar = n - (cityAsked.longitude / 360.0); // mean solar time

double M = (357.5291 + 0.98560028 * jStar) % 360; // solar mean anomaly

double C = 1.9148 * Math.sin(Math.toRadians(M)) + 0.0200 * Math.sin(Math.toRadians(2.0 * M))
+ 0.0003 * Math.sin(3.0 * M);// equation of the center

double lambda = (M + C + 180 + 102.9372) % 360;// ecliptic longitude

double jTransit = 2451545.0 + jStar + 0.0053 * Math.sin(Math.toRadians(M))
+ 0.0069 * Math.sin(Math.toRadians(2.0 * lambda)); // solar transit = solar noon

double sinDelta = Math.sin(Math.toRadians(lambda)) * Math.sin(Math.toRadians(23.4397)); // declination of
// the sun

double cosOmegaNull = Math.sin(Math.toRadians(0.833+(-2.076*Math.sqrt(cityAsked.elevationInMeters)/60)))
- Math.sin(Math.toRadians(cityAsked.latitude)) * sinDelta; // hour angle

double omegaNull = Math.cos(Math.toRadians(cosOmegaNull));

double jSunset = jTransit + omegaNull / 360.0; // sunset in Julian days

double daysSunset = (long) jSunset;
double daysFraction = jSunset - daysSunset;

LocalDateTime result = dayAsked.plusMinutes((long) (daysFraction * 24.0 * 60.0));
ZonedDateTime adjustedResult = result.atZone(ZoneId.of("Europe/Berlin"));
LocalDateTime jewishSundown = LocalDateTime.from(result)
.minusMinutes((long) (adjustedResult.getOffset().getTotalSeconds() / 60.0)).minusMinutes(18L);

System.out.println(n);
System.out.println(jSunset);
System.out.println(daysSunset);
System.out.println(daysFraction);
System.out.println(result);
System.out.println(adjustedResult);
System.out.println(jewishSundown);
}
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... ay-in-java
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как кодировать алгоритм Shabbat Sunset для любой пятницы в Java?
    Anonymous » » в форуме JAVA
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Как кодировать алгоритм Shabbat Sunset для любой пятницы в Java?
    Anonymous » » в форуме JAVA
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Как кодировать алгоритм Shabbat Sunset для любой пятницы в Java?
    Anonymous » » в форуме JAVA
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • API Sunrise-Sunset возвращает неожиданные ответы
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • API Sunrise-Sunset возвращает неожиданные ответы
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»