Hoe u de huidige tijd en datum in Android kunt krijgen

Hoe krijg ik de huidige tijd en datum in een Android-app?


Antwoord 1, autoriteit 100%

Je zou kunnen gebruiken:

import java.util.Calendar
Date currentTime = Calendar.getInstance().getTime();

Er zijn genoeg constanten in Agenda voor alles wat je nodig hebt.

Bewerken:
Bekijk de Documentatie voor agendaklassen


Antwoord 2, autoriteit 35%

U kunt (maar niet langer– zie hieronder!) android.text.format.Time:

Time now = new Time();
now.setToNow();

Van de hierboven gelinkte referentie:

De klasse Time is een snellere vervanging
voor de java.util.Calendar en
java.util.GregorianCalendar klassen.
Een exemplaar van de klasse Time
vertegenwoordigt een moment in de tijd, gespecificeerd
met tweede precisie.


OPMERKING 1:
Het is een aantal jaren geleden dat ik dit antwoord schreef,
en het gaat over een oude, Android-specifieke en nu verouderde klasse.
Google zegt nudat
“[t]zijn klas heeft een aantal problemen en het wordt aanbevolen om GregorianCalendarwordt in plaats daarvan gebruikt”.


OPMERKING 2:Hoewel de klasse Timeeen toMillis(ignoreDaylightSavings)-methode heeft, is dit slechts een gemak om door te geven aan methoden die verwacht tijd in milliseconden. De tijdwaarde is slechts tot op één seconde nauwkeurig; het gedeelte in milliseconden is altijd 000. Als je in een lus zit

Time time = new Time();   time.setToNow();
Log.d("TIME TEST", Long.toString(time.toMillis(false)));
... do something that takes more than one millisecond, but less than one second ...

De resulterende reeks herhaalt dezelfde waarde, zoals 1410543204000, totdat de volgende seconde is begonnen, waarna 1410543205000zich begint te herhalen.


Antwoord 3, autoriteit 29%

Als u de datum en tijd in een specifiek patroon wilt krijgen, kunt u het volgende gebruiken:

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault());
String currentDateandTime = sdf.format(new Date());

Of,

Datum:

String currentDate = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()).format(new Date());

Tijd:

String currentTime = new SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(new Date());

Antwoord 4, autoriteit 17%

Voor degenen die liever een aangepast formaat prefereren, kunt u het volgende gebruiken:

DateFormat df = new SimpleDateFormat("EEE, d MMM yyyy, HH:mm");
String date = df.format(Calendar.getInstance().getTime());

Terwijl je DateFormat-patronen kunt hebben zoals:

"yyyy.MM.dd G 'at' HH:mm:ss z" ---- 2001.07.04 AD at 12:08:56 PDT
"hh 'o''clock' a, zzzz" ----------- 12 o'clock PM, Pacific Daylight Time
"EEE, d MMM yyyy HH:mm:ss Z"------- Wed, 4 Jul 2001 12:08:56 -0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"------- 2001-07-04T12:08:56.235-0700
"yyMMddHHmmssZ"-------------------- 010704120856-0700
"K:mm a, z" ----------------------- 0:08 PM, PDT
"h:mm a" -------------------------- 12:08 PM
"EEE, MMM d, ''yy" ---------------- Wed, Jul 4, '01

Antwoord 5, autoriteit 9%

Eigenlijk is het veiliger om de huidige tijdzone op het apparaat in te stellen met Time.getCurrentTimezone(), anders krijg je de huidige tijd in UTC.

Time today = new Time(Time.getCurrentTimezone());
today.setToNow();

Vervolgens kunt u alle gewenste datumvelden krijgen, zoals bijvoorbeeld:

textViewDay.setText(today.monthDay + "");             // Day of the month (1-31)
textViewMonth.setText(today.month + "");              // Month (0-11)
textViewYear.setText(today.year + "");                // Year 
textViewTime.setText(today.format("%k:%M:%S"));  // Current time

Bekijk de klasse android.text.format.Timevoor alle details.

UPDATE

Zoals veel mensen aangeven, zegt Google dat deze les een aantal problemen heeft en niet meer gebruikt mag worden:

Deze les heeft een aantal problemen en het wordt aanbevolen dat:
Gregoriancalendar wordt in plaats daarvan gebruikt.

Bekende problemen:

Om historische redenen bij het uitvoeren van tijdberekeningen
Rekenkundige vindt momenteel plaats met behulp van 32-bits gehele getallen. Deze limieten
het betrouwbare tijdbereik representeerbaar uit 1902 tot 2037.Zie de
Wikipedia-artikel over het probleem van het jaar 2038 voor meer informatie. Vertrouw er niet op
dit gedrag; Het kan in de toekomst veranderen. Roeping
SwitchTimeZone (string) op een datum die niet kan bestaan, zoals een muur
Tijd die werd overgeslagen vanwege een DST-transitie, zal resulteren in een datum
in 1969 (d.w.z. -1, of 1 seconde vóór de 1 januari 1970 UTC). Veel van de
Formatteren / parseren veronderstelt ASCII-tekst en is daarom niet geschikt
voor gebruik met niet-ASCII-scripts.


6, Autoriteit 6%

Gebruik voor de huidige datum en tijd:

String mydate = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());

Welke uitgangen:

Feb 27, 2012 5:41:23 PM

Antwoord 7, autoriteit 4%

Probeer het op deze manier. Alle formaten worden hieronder gegeven om de datum- en tijdnotatie te krijgen.

   Calendar c = Calendar.getInstance();
    SimpleDateFormat dateformat = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss aa");
    String datetime = dateformat.format(c.getTime());
    System.out.println(datetime);



8, Autoriteit 4%

De huidige tijd die u kunt gebruiken System.currentTimeMillis()die standaard is in Java. Dan kunt u het gebruiken om een ​​datum te maken

Date currentDate = new Date(System.currentTimeMillis());

en zoals vermeld door anderen om een ​​tijd

te maken

Time currentTime = new Time();
currentTime.setToNow();

9, Autoriteit 3%

U kunt de code gebruiken:

Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate = sdf.format(c.getTime());

Uitgang:

2014-11-11 00:47:55

U krijgt ook enkele meer opmaakopties voor SimpleDateFormatvan Hier .


10, Autoriteit 2%

eenvoudig, u kunt de tijd ontleden om afzonderlijke waarden te krijgen voor de huidige tijd, als volgt:

Calendar cal = Calendar.getInstance(); 
  int millisecond = cal.get(Calendar.MILLISECOND);
  int second = cal.get(Calendar.SECOND);
  int minute = cal.get(Calendar.MINUTE);
        //12 hour format
  int hour = cal.get(Calendar.HOUR);
        //24 hour format
  int hourofday = cal.get(Calendar.HOUR_OF_DAY);

hetzelfde geldt voor de datum, als volgt:

Calendar cal = Calendar.getInstance(); 
  int dayofyear = cal.get(Calendar.DAY_OF_YEAR);
  int year = cal.get(Calendar.YEAR);
  int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
  int dayofmonth = cal.get(Calendar.DAY_OF_MONTH);

Antwoord 11, autoriteit 2%

Er zijn verschillende opties aangezien Android voornamelijk Java is, maar als je het in een textView wilt schrijven, zou de volgende code voldoende zijn:

String currentDateTimeString = DateFormat.getDateInstance().format(new Date());
// textView is the TextView view that should display it
textView.setText(currentDateTimeString);

Antwoord 12, autoriteit 2%

SimpleDateFormat databaseDateTimeFormate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
SimpleDateFormat databaseDateFormate = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf1 = new SimpleDateFormat("dd.MM.yy");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy.MM.dd G 'at' hh:mm:ss z");
SimpleDateFormat sdf3 = new SimpleDateFormat("EEE, MMM d, ''yy");
SimpleDateFormat sdf4 = new SimpleDateFormat("h:mm a");
SimpleDateFormat sdf5 = new SimpleDateFormat("h:mm");
SimpleDateFormat sdf6 = new SimpleDateFormat("H:mm:ss:SSS");
SimpleDateFormat sdf7 = new SimpleDateFormat("K:mm a,z");
SimpleDateFormat sdf8 = new SimpleDateFormat("yyyy.MMMMM.dd GGG hh:mm aaa");
String currentDateandTime = databaseDateTimeFormate.format(new Date());     //2009-06-30 08:29:36
String currentDateandTime = databaseDateFormate.format(new Date());     //2009-06-30
String currentDateandTime = sdf1.format(new Date());     //30.06.09
String currentDateandTime = sdf2.format(new Date());     //2009.06.30 AD at 08:29:36 PDT
String currentDateandTime = sdf3.format(new Date());     //Tue, Jun 30, '09
String currentDateandTime = sdf4.format(new Date());     //8:29 PM
String currentDateandTime = sdf5.format(new Date());     //8:29
String currentDateandTime = sdf6.format(new Date());     //8:28:36:249
String currentDateandTime = sdf7.format(new Date());     //8:29 AM,PDT
String currentDateandTime = sdf8.format(new Date());     //2009.June.30 AD 08:29 AM

Datumnotatie Patronen

G   Era designator (before christ, after christ)
y   Year (e.g. 12 or 2012). Use either yy or yyyy.
M   Month in year. Number of M's determine length of format (e.g. MM, MMM or MMMMM)
d   Day in month. Number of d's determine length of format (e.g. d or dd)
h   Hour of day, 1-12 (AM / PM) (normally hh)
H   Hour of day, 0-23 (normally HH)
m   Minute in hour, 0-59 (normally mm)
s   Second in minute, 0-59 (normally ss)
S   Millisecond in second, 0-999 (normally SSS)
E   Day in week (e.g Monday, Tuesday etc.)
D   Day in year (1-366)
F   Day of week in month (e.g. 1st Thursday of December)
w   Week in year (1-53)
W   Week in month (0-5)
a   AM / PM marker
k   Hour in day (1-24, unlike HH's 0-23)
K   Hour in day, AM / PM (0-11)
z   Time Zone

Antwoord 13

final Calendar c = Calendar.getInstance();
    int mYear = c.get(Calendar.YEAR);
    int mMonth = c.get(Calendar.MONTH);
    int mDay = c.get(Calendar.DAY_OF_MONTH);
textView.setText(""+mDay+"-"+mMonth+"-"+mYear);

Antwoord 14

Dit is een methode die handig is om datum en tijd te krijgen:

private String getDate(){
    DateFormat dfDate = new SimpleDateFormat("yyyy/MM/dd");
    String date=dfDate.format(Calendar.getInstance().getTime());
    DateFormat dfTime = new SimpleDateFormat("HH:mm");
    String time = dfTime.format(Calendar.getInstance().getTime());
    return date + " " + time;
}

Je kunt deze methode aanroepen en de huidige datum- en tijdwaarden krijgen:

2017/01//09 19:23

Antwoord 15

Gebruik voor de huidige datum en tijd met formaat

In Java

Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate = sdf.format(c.getTime());
Log.d("Date","DATE : " + strDate)

In Kotlin

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    val current = LocalDateTime.now()
    val formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy. HH:mm:ss")
    var myDate: String =  current.format(formatter)
    Log.d("Date","DATE : " + myDate)
} else {
    var date = Date()
    val formatter = SimpleDateFormat("MMM dd yyyy HH:mma")
    val myDate: String = formatter.format(date)
    Log.d("Date","DATE : " + myDate)
}

Datumopmaakpatronen

"yyyy.MM.dd G 'at' HH:mm:ss z" ---- 2001.07.04 AD at 12:08:56 PDT
"hh 'o''clock' a, zzzz" ----------- 12 o'clock PM, Pacific Daylight Time
"EEE, d MMM yyyy HH:mm:ss Z"------- Wed, 4 Jul 2001 12:08:56 -0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"------- 2001-07-04T12:08:56.235-0700
"yyMMddHHmmssZ"-------------------- 010704120856-0700
"K:mm a, z" ----------------------- 0:08 PM, PDT
"h:mm a" -------------------------- 12:08 PM
"EEE, MMM d, ''yy" ---------------- Wed, Jul 4, '01

Antwoord 16

Als je de huidige datum nodig hebt:

Calendar cc = Calendar.getInstance();
int year = cc.get(Calendar.YEAR);
int month = cc.get(Calendar.MONTH);
int mDay = cc.get(Calendar.DAY_OF_MONTH);
System.out.println("Date", year + ":" + month + ":" + mDay);

Als je de huidige tijd nodig hebt:

int mHour = cc.get(Calendar.HOUR_OF_DAY);
 int mMinute = cc.get(Calendar.MINUTE);
 System.out.println("time_format" + String.format("%02d:%02d", mHour , mMinute));

Antwoord 17

Time time = new Time();
time.setToNow();
System.out.println("time: " + time.hour+":"+time.minute);

Dit geeft je bijvoorbeeld 12:32.

Vergeet niet om android.text.format.Time te importeren;


Antwoord 18

   SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    Calendar cal = Calendar.getInstance();
    System.out.println("time => " + dateFormat.format(cal.getTime()));
    String time_str = dateFormat.format(cal.getTime());
    String[] s = time_str.split(" ");
    for (int i = 0; i < s.length; i++) {
         System.out.println("date  => " + s[i]);
    }
    int year_sys = Integer.parseInt(s[0].split("/")[0]);
    int month_sys = Integer.parseInt(s[0].split("/")[1]);
    int day_sys = Integer.parseInt(s[0].split("/")[2]);
    int hour_sys = Integer.parseInt(s[1].split(":")[0]);
    int min_sys = Integer.parseInt(s[1].split(":")[1]);
    System.out.println("year_sys  => " + year_sys);
    System.out.println("month_sys  => " + month_sys);
    System.out.println("day_sys  => " + day_sys);
    System.out.println("hour_sys  => " + hour_sys);
    System.out.println("min_sys  => " + min_sys);

Antwoord 19

Je kunt ook android.os.SystemClock gebruiken.
SystemClock.elapsedRealtime() geeft u bijvoorbeeld nauwkeurigere tijdmetingen wanneer de telefoon slaapt.


Antwoord 20

U kunt eenvoudig de volgende code gebruiken:

DateFormat df = new SimpleDateFormat("HH:mm"); // Format time
 String time = df.format(Calendar.getInstance().getTime());
 DateFormat df1 = new SimpleDateFormat("yyyy/MM/dd"); // Format date
 String date = df1.format(Calendar.getInstance().getTime());

Antwoord 21

Voor een aangepast tijd- en datumformaat:

   SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ",Locale.ENGLISH);
    String cDateTime=dateFormat.format(new Date());

Uitvoer is als onderstaand formaat:
2015-06-18T10:15:56-05:00


Antwoord 22

Date todayDate = new Date();
todayDate.getDay();
todayDate.getHours();
todayDate.getMinutes();
todayDate.getMonth();
todayDate.getTime();

Antwoord 23

Time now = new Time();
now.setToNow();

Probeer dit ook eens voor mij.


Antwoord 24

U kunt de datum verkrijgen door gebruik te maken van:

Time t = new Time(Time.getCurrentTimezone());
t.setToNow();
String date = t.format("%Y/%m/%d");

Dit geeft je een resultaat in een mooie vorm, zoals in dit voorbeeld: “2014/02/09”.


Antwoord 25

Nou, ik had problemen met sommige antwoorden van de API, dus ik fuseer deze code, ik hoop dat het hen van pas komt:

Time t = new Time(Time.getCurrentTimezone());
t.setToNow();
String date1 = t.format("%Y/%m/%d");
Date date = new Date(System.currentTimeMillis());
SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm aa", Locale.ENGLISH);
String var = dateFormat.format(date);
String horafecha = var+ " - " + date1;
tvTime.setText(horafecha);

Uitvoer:
15:25 – 2017/10/03


Antwoord 26

Probeer dit

String mytime = (DateFormat.format("dd-MM-yyyy hh:mm:ss", new java.util.Date()).toString());

Antwoord 27

De onderstaande methode retourneert de huidige datum en tijd in String. Gebruik een andere tijdzone volgens uw werkelijke tijdzone. Ik heb GMT gebruikt

public static String GetToday(){
    Date presentTime_Date = Calendar.getInstance().getTime();
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
    return dateFormat.format(presentTime_Date);
}

Antwoord 28

Je moet de Calender-klasse gebruiken volgens de nieuwe API. Datumklasse is nu beëindigd.

Calendar cal = Calendar.getInstance();
String date = ""+cal.get(Calendar.DATE)+"-"+(cal.get(Calendar.MONTH)+1)+"-"+cal.get(Calendar.YEAR);
String time = ""+cal.get(Calendar.HOUR_OF_DAY)+":"+cal.get(Calendar.MINUTE);

Antwoord 29

Probeer de onderstaande code te gebruiken:

Date date = new Date();
 SimpleDateFormat dateFormatWithZone = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",Locale.getDefault());  
 String currentDate = dateFormatWithZone.format(date);

Other episodes