Datum ermitteln

kara2609

Neues Mitglied
Hallo,
ich habe folgende Frage, also ich habe so ein kleines Verwaltungsprogramm geschrieben und
das Problem ist, wenn jemand an dem Windowsdatum rumspielt, sind die ganzen Daten, die ermittelt wurden, durcheinander. Gibt es eine andere Möglichkeit oder Ansatz wie man das aktuelle Datum ermittelt, damit ich das oben genannte Probleme lösen kann?
Mit freundlichen Grüßen
kara
 

Michael...

Top Contributor
Das Systemdatum ist nun mal das entscheidende Datum, an dem sich andere Programme orientieren.

Man könnte sich das akuelle Datum übers Internet holen.
 

freez

Top Contributor
Wie sieht denn deine Umgebung aus? Verbindet sich dein Programm mit einem Server? Wenn ja, könntest du das Datum von dem Server holen, oder wie mein Vorredner schon sagte übers Internet.
Alternativ kannst du das Datum vom Server nehmen, in dem Moment, wenn Daten an den Server übertragen werden.

Die beste Variante ist natürlich die Clients per NTP aktuell zu halten. Wird natürlich nicht möglich sein, wenn du keinen administrativen Zugriff auf diese Clients hast.

Du siehst, es gibt ein paar Möglichkeiten, aber bessere Tipps können wir erst geben, wenn wir deine Umgebung etwas genauer kennen.
 

Andi_CH

Top Contributor
Um dir die Arbeit zu ersparen - der NTPClient läuft gut, hat aber auf der Webseite Zeilennummern drin - die hab ich rausgenommen

Einfach aufrufen (oder entsprechend abändern) mit
"time.eindows.com" "time.nist.gov" o.ä.

Falls dir einige Packages fehlen, die findest du hier

Java:
package examples.ntp;
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      [url]http://www.apache.org/licenses/LICENSE-2.0[/url]
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


import java.io.IOException;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.text.NumberFormat;

import org.apache.commons.net.ntp.NTPUDPClient;
import org.apache.commons.net.ntp.NtpUtils;
import org.apache.commons.net.ntp.NtpV3Packet;
import org.apache.commons.net.ntp.TimeInfo;
import org.apache.commons.net.ntp.TimeStamp;

/***
 * This is an example program demonstrating how to use the NTPUDPClient
 * class. This program sends a Datagram client request packet to a
 * Network time Protocol (NTP) service port on a specified server,
 * retrieves the time, and prints it to standard output along with
 * the fields from the NTP message header (e.g. stratum level, reference id,
 * poll interval, root delay, mode, ...)
 * See <A HREF="ftp://ftp.rfc-editor.org/in-notes/rfc868.txt"> the spec </A>
 * for details.
 * <p>
 * Usage: NTPClient <hostname-or-address-list>
 * <br>
 * Example: NTPClient clock.psu.edu
 *
 * @author Jason Mathews, MITRE Corp
 ***/
public final class NTPClient
{
	private static final NumberFormat numberFormat = new java.text.DecimalFormat("0.00");

	/**
	 * Process <code>TimeInfo</code> object and print its details.
	 * @param info <code>TimeInfo</code> object.
	 */
	public static void processResponse(TimeInfo info)
	{
		NtpV3Packet message = info.getMessage();
		int stratum = message.getStratum();
		String refType;
		if (stratum <= 0)
			refType = "(Unspecified or Unavailable)";
		else if (stratum == 1)
			refType = "(Primary Reference; e.g., GPS)"; // GPS, radio clock, etc.
		else
			refType = "(Secondary Reference; e.g. via NTP or SNTP)";
		// stratum should be 0..15...
		System.out.println(" Stratum: " + stratum + " " + refType);
		int version = message.getVersion();
		int li = message.getLeapIndicator();
		System.out.println(" leap=" + li + ", version="
				+ version + ", precision=" + message.getPrecision());

		System.out.println(" mode: " + message.getModeName() + " (" + message.getMode() + ")");
		int poll = message.getPoll();
		// poll value typically btwn MINPOLL (4) and MAXPOLL (14)
		System.out.println(" poll: " + (poll <= 0 ? 1 : (int) Math.pow(2, poll))
				+ " seconds" + " (2 ** " + poll + ")");
		double disp = message.getRootDispersionInMillisDouble();
		System.out.println(" rootdelay=" + numberFormat.format(message.getRootDelayInMillisDouble())
				+ ", rootdispersion(ms): " + numberFormat.format(disp));

		int refId = message.getReferenceId();
		String refAddr = NtpUtils.getHostAddress(refId);
		String refName = null;
		if (refId != 0) {
			if (refAddr.equals("127.127.1.0")) {
				refName = "LOCAL"; // This is the ref address for the Local Clock
			} else if (stratum >= 2) {
				// If reference id has 127.127 prefix then it uses its own reference clock
				// defined in the form 127.127.clock-type.unit-num (e.g. 127.127.8.0 mode 5
				// for GENERIC DCF77 AM; see refclock.htm from the NTP software distribution.
				if (!refAddr.startsWith("127.127")) {
					try {
						InetAddress addr = InetAddress.getByName(refAddr);
						String name = addr.getHostName();
						if (name != null && !name.equals(refAddr))
							refName = name;
					} catch (UnknownHostException e) {
						// some stratum-2 servers sync to ref clock device but fudge stratum level higher... (e.g. 2)
						// ref not valid host maybe it's a reference clock name?
						// otherwise just show the ref IP address.
						refName = NtpUtils.getReferenceClock(message);
					}
				}
			} else if (version >= 3 && (stratum == 0 || stratum == 1)) {
				refName = NtpUtils.getReferenceClock(message);
				// refname usually have at least 3 characters (e.g. GPS, WWV, LCL, etc.)
			}
			// otherwise give up on naming the beast...
		}
		if (refName != null && refName.length() > 1)
			refAddr += " (" + refName + ")";
		System.out.println(" Reference Identifier:\t" + refAddr);

		TimeStamp refNtpTime = message.getReferenceTimeStamp();
		System.out.println(" Reference Timestamp:\t" + refNtpTime + "  " + refNtpTime.toDateString());

		// Originate Time is time request sent by client (t1)
		TimeStamp origNtpTime = message.getOriginateTimeStamp();
		System.out.println(" Originate Timestamp:\t" + origNtpTime + "  " + origNtpTime.toDateString());

		long destTime = info.getReturnTime();
		// Receive Time is time request received by server (t2)
		TimeStamp rcvNtpTime = message.getReceiveTimeStamp();
		System.out.println(" Receive Timestamp:\t" + rcvNtpTime + "  " + rcvNtpTime.toDateString());

		// Transmit time is time reply sent by server (t3)
		TimeStamp xmitNtpTime = message.getTransmitTimeStamp();
		System.out.println(" Transmit Timestamp:\t" + xmitNtpTime + "  " + xmitNtpTime.toDateString());

		// Destination time is time reply received by client (t4)
		TimeStamp destNtpTime = TimeStamp.getNtpTime(destTime);
		System.out.println(" Destination Timestamp:\t" + destNtpTime + "  " + destNtpTime.toDateString());

		info.computeDetails(); // compute offset/delay if not already done
		Long offsetValue = info.getOffset();
		Long delayValue = info.getDelay();
		String delay = (delayValue == null) ? "N/A" : delayValue.toString();
		String offset = (offsetValue == null) ? "N/A" : offsetValue.toString();

		System.out.println(" Roundtrip delay(ms)=" + delay
				+ ", clock offset(ms)=" + offset); // offset in ms
	}

	public static final void main(String[] args)
	{
		if (args == null || args.length == 0) {
			System.err.println("Usage: NTPClient <hostname-or-address-list>");
			System.exit(1);
		}

		NTPUDPClient client = new NTPUDPClient();
		// We want to timeout if a response takes longer than 10 seconds
		client.setDefaultTimeout(10000);
		try {
			client.open();
			for (int i = 0; i < args.length; i++)
			{
				System.out.println();
				try {
					InetAddress hostAddr = InetAddress.getByName(args[i]);
					System.out.println("> " + hostAddr.getHostName() + "/" + hostAddr.getHostAddress());
					TimeInfo info = client.getTime(hostAddr);
					processResponse(info);
				} catch (IOException ioe) {
					ioe.printStackTrace();
				}
			}
		} catch (SocketException e) {
			e.printStackTrace();
		}
		client.close();
	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Aus Anzahl Tagen Datum ermitteln Allgemeine Java-Themen 8
S Build-Zeitpunt (Datum und Uhrzeit) irgendwie während der Laufzeit zugänglich machen..? Allgemeine Java-Themen 4
T Datum OHNE Uhrzeit Zeitzonen-übergreifend Allgemeine Java-Themen 4
W Datum anzeigen Allgemeine Java-Themen 10
MiMa Datum von zweistelliger Jahreszahl auf 4 Stellen aufrüsten? Allgemeine Java-Themen 4
MiMa Datum von String zu LocalDateTime Allgemeine Java-Themen 8
MiMa Wie sollte am besten ein Datum gespeichert werden? Allgemeine Java-Themen 8
Thallius Wie parse ich dieses Datum richtig? Allgemeine Java-Themen 5
G Excel Datum richtig auf der Konsole ausgeben Allgemeine Java-Themen 1
Hatsi09 Heutiges Datum Allgemeine Java-Themen 3
J Countdown für Datum und Uhrzeit Allgemeine Java-Themen 4
MiMa Das Datum Format ist mir unbekannt. Allgemeine Java-Themen 1
G Datum letzte 7 tage Allgemeine Java-Themen 6
A Datum und Uhrzeit in andere Zeitzone umrechnen Allgemeine Java-Themen 7
W Datum prüfen + zweistellig Allgemeine Java-Themen 11
M Datum Zeitdifferenz in Stunden umrechnen Allgemeine Java-Themen 4
E Datei anhand Datum identifizieren Allgemeine Java-Themen 3
Dechasa Java 8 - Datum vergleichen Allgemeine Java-Themen 5
M Datum umwandeln. Allgemeine Java-Themen 1
P Datum im gewünschten Bereich Allgemeine Java-Themen 21
N Zeitabstand zwischen 2 Daten(Mehrzahl von Datum) Allgemeine Java-Themen 3
Bluedaishi Dateien löschen die älter als das aktuelle Datum sind Allgemeine Java-Themen 9
Bluedaishi String Array mit Datum und Uhrzeit String sortieren Allgemeine Java-Themen 6
M Aktuelle Systemzeit und Datum abfragen Allgemeine Java-Themen 2
M datei aufruf datum auslesen Allgemeine Java-Themen 5
R Datum in Excel Tabelle eintragen Allgemeine Java-Themen 6
T auf Valides Datum prüfen Allgemeine Java-Themen 12
E Datum in Kw umrechen Allgemeine Java-Themen 3
E Datum in String Allgemeine Java-Themen 4
K Datum+Uhrzeit in Millisekunden (long) umwandeln Allgemeine Java-Themen 7
C jollyday: prüfen, ob Datum = Feiertag Allgemeine Java-Themen 8
F Tests mit dynamischem Datum Allgemeine Java-Themen 2
N Datum auf 00:00:00 Uhr normalisieren Allgemeine Java-Themen 3
A einzelne Tage als Datum ausgeben Allgemeine Java-Themen 6
S Datum vergleichen - ohne Hilfsmittel Allgemeine Java-Themen 8
T Aktuelles Datum auslesen Allgemeine Java-Themen 2
T Datum um ein Tag reduzieren Allgemeine Java-Themen 6
S log4j, Datum in Fileappendern formatieren Allgemeine Java-Themen 4
V Apache POI Excel Datum auslesen Allgemeine Java-Themen 6
C Datum in Excel auslesen Allgemeine Java-Themen 13
J Funktion zu einer Uhrzeit/datum ausführen Allgemeine Java-Themen 4
M Datum/Uhrzeit in ein Textfeld schreiben Allgemeine Java-Themen 28
L Gregorian Calender falsches Datum Allgemeine Java-Themen 2
0 Datum in Java Date umwandeln Allgemeine Java-Themen 4
S String-Array nach Datum sortieren Allgemeine Java-Themen 10
J Datum und Zeit Allgemeine Java-Themen 4
B Jfree Chart mit Datum und Uhrzeit Allgemeine Java-Themen 6
B Datum jetzt vor einer Woche Allgemeine Java-Themen 5
B warum zählt der Kalender das Datum nicht weiter Allgemeine Java-Themen 2
V Datum vergleichen Allgemeine Java-Themen 7
C Datum erstellen für SQL Format Date Allgemeine Java-Themen 3
C Datum zurücksetzen Allgemeine Java-Themen 9
A String zu Datum parsen - SimpleDateFormat Problem Allgemeine Java-Themen 8
G File.listFiles nach Datum sortiert ausgeben Allgemeine Java-Themen 1
A Datum parsen Allgemeine Java-Themen 9
G Datum vergleichen Allgemeine Java-Themen 5
C Datum addieren Allgemeine Java-Themen 2
G Timestamp aus Datum Allgemeine Java-Themen 4
B Herausfinden ob Datum existiert Allgemeine Java-Themen 2
H2SO3- string mithilfe von .matches als datum identifizieren Allgemeine Java-Themen 4
Z Datum ohne Format-Kenntnisse parsen Allgemeine Java-Themen 5
C ArrayList nach Datum sortieren Allgemeine Java-Themen 7
G Datum um 1 Monat verschoben Allgemeine Java-Themen 3
J Umwandeln von einem String in ein Datum Allgemeine Java-Themen 8
D Email versand bei einem festgelegten Datum Allgemeine Java-Themen 11
T Mit Datum und Zeit rechnen Allgemeine Java-Themen 8
D Datum korrekt erkennen Allgemeine Java-Themen 27
M Datum einlesen aus jTextField Allgemeine Java-Themen 2
M Zukünftiges Datum Allgemeine Java-Themen 3
G Listener auf aktuelles Datum / Uhrzeit Allgemeine Java-Themen 2
G JDK 1.5 und das Datum Allgemeine Java-Themen 7
V Datum parsen Allgemeine Java-Themen 6
V Datei kopieren und Datum erhalten Allgemeine Java-Themen 2
M Datei Handling mit Datum Allgemeine Java-Themen 2
M Datum in Tabelle formatiert ausgeben Allgemeine Java-Themen 3
S Datum einer Datei online? Allgemeine Java-Themen 6
G Anzahl an Tagen auf Datum addieren Allgemeine Java-Themen 4
G Datum im Format yyyy-mm-dd erstellen Allgemeine Java-Themen 1
P Datum in einer DateComboBox setzen Allgemeine Java-Themen 7
MQue Datum in ComboBox setzen Allgemeine Java-Themen 9
J [Aenderungszeit Datei] nur Datum vergleichen Allgemeine Java-Themen 3
G Anzahl Tage in Datum umwandeln Allgemeine Java-Themen 13
M Datum nicht richtig geprüft, warum? Allgemeine Java-Themen 9
L datum nach dem kopiervorgang neu setzen? Allgemeine Java-Themen 2
R Datum in *.txt suchen und ersetzen Allgemeine Java-Themen 2
H Ein zufälliges Datum innerhalb eines Intervalles erzeugen Allgemeine Java-Themen 3
S POI Datum Allgemeine Java-Themen 2
G Datum einer Datei Allgemeine Java-Themen 8
J Datum auf Gültigkeit überprüfen Allgemeine Java-Themen 4
TheJavaKid Datum -> long Allgemeine Java-Themen 9
M Führende Null in einem Datum Allgemeine Java-Themen 3
C Datum-/Zeitdifferenz Allgemeine Java-Themen 5
F Datum gültig ? Allgemeine Java-Themen 9
G Datum konvertieren Allgemeine Java-Themen 14
G mysql datum umwandeln mittels jsp Allgemeine Java-Themen 10
F Datum mit anzahl tagen berechnen Allgemeine Java-Themen 3
F Datum in GregorianCalendar Allgemeine Java-Themen 3
G Datum Allgemeine Java-Themen 4
T Datum testen und Einsetzten Allgemeine Java-Themen 5
K Datum in ein anderes Format bringen Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben