如何在Android中获取当前时间和日期


1106

如何在Android应用中获取当前时间和日期?


3
43个答案!尽管其中许多在撰写时都很好,但在这里使用2018的好答案就在这里
Ole VV

Answers:


1308

您可以使用:

import java.util.Calendar

Date currentTime = Calendar.getInstance().getTime();

日历中有很多常量可以满足您的所有需求。

编辑:
检查日历类文档


14
+1这非常有帮助。刚开始时,这些都是我们需要的所有小知识...我正在使用日历获取儒略历。比获取毫秒数和确定当前值是否今天要容易得多;)
Bill Mote

9
但是,这将日期和时间从何处拉出来?android设备设置本身?
凯尔·克莱格

12
@Kyle是的,它基于设备时间设置/时区。从文档引用:“日历的getInstance方法返回一个日历,该日历的语言环境基于系统设置,并且其时间字段已使用当前日期和时间初始化” -(在类文档中的第一个示例代码行上方)。

3
+1这个解决方案具有毫秒级的精度,正是我所需要的。
Igor Zelaya 2013年

42
就像@adamdport所说的那样,这实际上并不能回答问题…… Calendar.getInstance().getTime()或者Calendar.getInstance().getTimeInMillis()会起作用。
akousmata

487

您可以(但不再需要 -参见下文!)使用android.text.format.Time

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

根据上面链接的参考:

Time类可以更快地替换java.util.Calendar和java.util.GregorianCalendar类。Time类的实例表示时刻,以秒精度指定。


注意1: 自从我写了这个答案已经好几年了,它是关于一个旧的,特定于Android的类,现在已弃用的类。Google现在 “他的课程有很多问题,建议改用GregorianCalendar ”。


注意2:即使Time该类具有toMillis(ignoreDaylightSavings)方法,这也只是传递给期望以毫秒为单位的方法的便利。时间值仅精确到一秒;毫秒部分始终为000。如果在循环中

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 ...

产生的序列将重复相同的值,例如1410543204000,直到下一秒开始,此时1410543205000将开始重复。


2
@InsanityOnABun和Muhammad Babar。不不不。文档说“以第二精度指定”即使是最简单的测试(将当前时间循环获取,toMillis并记录/打印结果)也将向您显示结果时间以000为毫秒!
ToolmakerSteve

3
@IgorZelaya如果想要毫秒级的精度,则可能是在进行间隔计时,而不是一天中的时间。Android文档建议SystemClock.uptimeMillis()间隔时间。由于这是大多数内置函数使用的,因此强烈希望在所有设备上都能很好地实现它。请参阅SystemClock中的讨论...如果要将其与一天中的时间相关联,请在应用程序的onResume中阅读此内容以及Time / setToNow / toMillis。记住两者之间的区别。
ToolmakerSteve

不要使用Time类。它将在将来被删除并且存在很多问题。
桑迪查普曼,2014年

1
>在API级别22中弃用了该类。请改用GregorianCalendar。见这里

实际上,GregorianCalendar几年前在Java中,后来在Android中,java.time类(特别是)取代了ZonedDateTime。对于早期的Android,请参见ThreeTen- BackportThreeTenABP项目。
罗勒·布尔克

365

如果要以特定模式获取日期和时间,可以使用以下命令:

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

要么,

日期

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

时间:

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

这将给定UTC时间,应采用时区。
AndrasBalázsLajtha 2012年

10
请注意,如果性能存在问题,则SimpleDateFormat可能会出现问题。在我的应用程序中,我有一个自定义视图,该视图具有约20个HH:MM标签,它们表示特定时间(长整数表示毫秒),并具有相等数量的可绘制资源。最初的测试表明,这种交互并不像我想要的那样流畅。当我分析onDraw()时,我发现SimpleTimeFormatter调用占用了80%的时间。事实上,我在阅读此页为一个更有效的格式化搜索的一部分,以了解更多有关日历等
威廉·T野鸭

3
是的,但是不再。我没有意识到所涉及的开销,并认为这几乎是一个POJO。
William T. Mallard 2014年

32
简而言之:String currentDateandTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
Pratik Butani 2014年

4
您可以sdf.setTimeZone(TimeZone.getDefault())在中间插入
Harvey 2015年

231

对于那些可能更喜欢自定义格式的用户,可以使用:

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

而您可以使用DateFormat模式,例如:

"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

126

实际上,使用来设置设备上设置的当前时区会更安全Time.getCurrentTimezone(),否则您将以UTC格式获取当前时间。

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

然后,您可以获得所需的所有日期字段,例如:

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

有关所有详细信息,请参见android.text.format.Time类。

更新

正如许多人指出的那样,Google表示此类存在许多问题,因此不应再使用:

此类有很多问题,建议改用GregorianCalendar。

已知的问题:

由于历史原因,执行时间计算时,目前所有算术均使用32位整数进行。这限制了从1902年到2037年可以表示的可靠时间范围。有关详细信息,请参阅Wikipedia文章有关2038年问题。不要依靠这种行为;将来可能会改变。在不存在的日期上调用switchTimezone(String),例如由于DST转换而跳过的挂墙时间,将导致1969年的日期(即-1,即1970年1月1日UTC之前的1秒)。大多数格式/解析都假定使用ASCII文本,因此不适合与非ASCII脚本一起使用。


时间应该从哪个包中导入?
ManishSB,2014年

此类已在API级别22中弃用。我们可以改用GregorianCalendar。
Choletski

78

对于当前日期和时间,请使用:

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

哪个输出:

Feb 27, 2012 5:41:23 PM

我得到了系统的当前日期,日期和时间,但是时间没有改变。我要以秒为单位增加时间,怎么办?
Bhavesh Hirpara '10年

2
根据Android API,这是推荐的操作方式:developer.android.com/reference/java/text / ...谢谢!
M Granja

58

尝试这种方式下面给出所有格式以获取日期和时间格式。

    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);

第一

第二 第三


53

tl; dr

Instant.now()  // Current moment in UTC.

…要么…

ZonedDateTime.now( ZoneId.of( "America/Montreal" ) )  // In a particular time zone

细节

其他答案虽然正确,但已过时。事实证明,旧的日期时间类设计不良,令人困惑且麻烦。

java.time

那些旧类已被java.time框架取代。

这些新类的灵感来自由JSR 310定义并由ThreeTen-Extra项目扩展的非常成功的Joda-Time项目。

请参阅《Oracle教程》

Instant

一个Instant是在时间轴上的一个时刻UTC高达分辨率纳秒

 Instant instant = Instant.now(); // Current moment in UTC.

时区

套用时区(ZoneId)获得ZonedDateTime。如果省略时区,则将隐式应用JVM的当前默认时区。最好明确指定所需/预期的时区。

使用正确的时区的名称,格式continent/regionAmerica/MontrealEurope/BrusselsAsia/Kolkata。切勿使用3-4字母缩写,例如EST或,IST因为它们既不是标准化的也不是唯一的。

ZoneId zoneId = ZoneId.of( "America/Montreal" ); // Or "Asia/Kolkata", "Europe/Paris", and so on.
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );

Java中的日期时间类型表(现代和旧式)

产生字串

您可以轻松地生成String日期时间值的文本表示形式。您可以使用标准格式,自己的自定义格式或自动本地化格式。

ISO 8601

您可以调用这些toString方法以使用通用且合理的ISO 8601标准来格式化文本。

String output = instant.toString();

2016-03-23T03:09:01.613Z

请注意,对于ZonedDateTime,该toString方法通过在方括号中附加时区名称来扩展ISO 8601标准。极其有用和重要的信息,但不是标准的。

2016-03-22T20:09:01.613-08:00 [美国/洛杉矶]

自订格式

或在DateTimeFormatter类中指定自己的特定格式设置模式。

DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "dd/MM/yyyy hh:mm a" );

Locale为人类语言(英语,法语等)指定a ,以翻译日/月的名称以及定义文化规范(例如年,月和日的顺序)。请注意,Locale这与时区无关。

formatter = formatter.withLocale( Locale.US ); // Or Locale.CANADA_FRENCH or such.
String output = zdt.format( formatter );

本地化

更好的是,让java.time自动执行本地化工作。

DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.MEDIUM );
String output = zdt.format( formatter.withLocale( Locale.US ) );  // Or Locale.CANADA_FRENCH and so on.

关于java.time

java.time框架是建立在Java 8和更高版本。这些类取代麻烦的老传统日期时间类,如java.util.DateCalendar,和SimpleDateFormat

现在处于维护模式Joda-Time项目建议迁移到java.time类。

要了解更多信息,请参见Oracle教程。并在Stack Overflow中搜索许多示例和说明。规格为JSR 310

您可以直接与数据库交换java.time对象。使用与JDBC 4.2或更高版本兼容的JDBC驱动程序。不需要字符串,不需要类。java.sql.*

在哪里获取java.time类?

下表列出了在Java和Android的哪个版本上使用* java.time *技术的哪种实现。


2
@ giraffe.guru重读我的答案。您错过了第三个子弹。多的java.time功能后移植到Java 6和7在ThreeTen-反向移植和在进一步适于到Android ThreeTenABP
罗勒·布尔克

Instant.now()并且ZonedDateTime.now()是必需的API 26
Ryde

2
正如我对giraffe.guru所说的那样,请重读我的答案。寻找提及“ Android”的第三个项目符号。
罗勒·布尔克

我相信您是对的:新的java.time版本表比项目符号列表更直接,更轻松地传达了消息。如果那是我,我想我会将问题复杂化一点,并在ThreeTenBackport / Java 8+和ThreeTenABP / Android 26+下的方括号(或类似内容)中打上复选标记,因为这些组合确实有效,只有使用它们通常没有任何意义。正在开发的使用ThreeTenABP并针对26级以上26级以下的Android API级别的Android应用程序。在我看来,在这些情况下,开发人员选择得当。
Ole VV

1
@ OleV.V。感谢您在图形表中建议使用辅助复选标记。我在表的更高版本中一直在使用它。大有改善。
罗勒·布尔克

52

要确定当前时间,可以使用System.currentTimeMillis()Java中的标准时间。然后你可以用它来创建一个日期

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

并像别人提到的那样创造了时间

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

13
不需要System.currentTimeMillis(); 只是new Date() 做同样的事情
约尼克,

@Jonik Cannot resolve constructor Date()在机器人中,Android SDK使用Java 6和7的混合物
surfer190

1
谢谢。Date currentDate = new Date(System.currentTimeMillis());是正确的
mghhgm

@mghhgm不,new Date(System.currentTimeMillis())不正确:(a)多余,因为与完全相同new Date()。(b)麻烦的java.util.Date类现在已由java.time.InstantJava 8及更高版本取代。后移植到Java 6和7在ThreeTen-反向移植项目,和在早期的Android(<26)ThreeTenABP
罗勒·布尔克

37

您可以使用以下代码:

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

输出:

2014-11-11 00:47:55

您还可以SimpleDateFormat此处获得更多格式化选项。


仅供参考,麻烦的旧日期,时间类,如java.util.Datejava.util.Calendarjava.text.SimpleDateFormat现在的遗产,由取代java.time内置到Java 8和更高等级。请参见Oracle 教程
罗勒·布尔克

32

很容易,您可以剖析时间以获取当前时间的单独值,如下所示:

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);

日期也一样,如下所示:

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);

如何获得未来5-10天的日期。.是否在此处手动计算?
CoDe13 2013年

@CoDe您为此使用Date
FindOutIslamNow

27

有几种选择,因为Android主要是Java,但是如果您希望在textView中编写它,则以下代码可以解决问题:

String currentDateTimeString = DateFormat.getDateInstance().format(new Date());

// textView is the TextView view that should display it
textView.setText(currentDateTimeString);

8
您应该使用CalendarGregorianCalendar。该Date班已被弃用。
约瑟夫·厄尔

谢谢队友:)我对此一无所知
dLobatog 2011年

12
根据Date()参考文档(developer.android.com/reference/java/util/Date.html),没有任何东西引用过不推荐使用Date()类-但是不推荐使用几种方法和构造函数。
Zac Seth

2
在当前用户设置(例如12/24时间格式)的意义上,这将产生不正确的结果。使用android.text.format.DateFormat.getTimeFormat(Context context)获取当前用户设置的DateFormat。
wonder.mice 2011年

@Zac你是对的,甚至Date的getTime方法甚至更多地使用完整

24
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

日期格式模式

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

1
尽管其他答案也是正确的。我喜欢这个答案,因为它也可以解决与时间相关的问题。感谢@Vighnesh KM
Ankit Gupta

17
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);

15

这是获取日期和时间的有用方法:

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;
}

您可以调用此方法并获取当前日期和时间值:

2017/01//09 19:23

我不喜欢表示逻辑和过程逻辑的紧密结合。我更喜欢只进行格式化并采用日期输入参数的方法。我也不明白您为什么要使用2 SimpleDateFormats和2 Dates ...您不能只使用"yyyy/MM/dd HH:mm"一次格式和通话日历吗?
AjahnCharles

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

例如,这将为您提供12:32。

记住要导入android.text.format.Time;


12
    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);

12

对于具有格式的当前日期和时间,请使用

在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)

在科特林

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)
}

日期格式化程序模式

"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

感谢您的共同贡献。您是否正在贡献前36个答案中还没有的东西?无论如何,您仍在使用臭名昭著的麻烦且过时的SimpleDateFormat类。甚至在您不需要Oreo之前,您也可以使用ThreeTenABP,即Java.time的反向端口,现代的Java日期和时间API。
Ole VV

11

您还可以使用android.os.SystemClock。例如,SystemClock.elapsedRealtime()将在电话进入睡眠状态时为您提供更准确的时间读数。


10

如果您需要当前日期:

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);

如果您需要当前时间:

 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));



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

尝试一下对我也有用。


8

您可以使用以下方法获取日期:

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

这将以一种不错的形式为您提供结果,例如以下示例:“ 2014/02/09”。


无参数构造函数Time t = new Time();将使用默认时区。以我的经验,默认==当前。
William T. Mallard

7

好吧,我在API的一些答案上遇到了问题,所以我融合了这段代码,希望它可以为他们服务:

    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);

输出:03:25 PM-2017/10/03


7

您可以简单地使用以下代码:

 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());

6

尝试这个

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

这是完美的衬板和优雅的解决方案。这就是所有需要的内容,而不是像其他答案中那样不必要的冗长解决方案。
zeeshan

5

下面的方法将返回String中的当前日期和时间,根据您的实际时区使用不同的时区。我已经使用了GMT

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);
}

4

您应该根据新的API使用Calender类。现在不推荐使用Date类。

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);

4

尝试使用以下代码:

 Date date = new Date();
 SimpleDateFormat dateFormatWithZone = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",Locale.getDefault());  
 String currentDate = dateFormatWithZone.format(date);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.