Android获取当前时间戳?


int time = (int) (System.currentTimeMillis());
Timestamp tsTemp = new Timestamp(time);
String ts = tsTemp.toString();

11个解决方案

236 votes

解决方案是:

Long tsLong = System.currentTimeMillis()/1000;
String ts = tsLong.toString();
Rjaibi Mejdi answered 2019-03-09T00:34:38Z


System.currentTimeMillis()是标准的“墙”时钟(时间和日期),表示自纪元以来的毫秒数。 挂钟可以由用户或电话网络设置(请参阅setCurrentTimeMillis(long)),因此时间可能会不可预测地向后或向前跳转。 只有在与实际日期和时间对应很重要时,例如在日历或闹钟应用程序中,才应使用此时钟。 间隔或经过时间测量应使用不同的时钟。 如果您使用的是System.currentTimeMillis(),请考虑收听ACTION_TIME_TICK,ACTION_TIME_CHANGED和ACTION_TIMEZONE_CHANGED Intent广播,以了解时间的变化。

drooooooid answered 2019-03-09T00:35:14Z

27 votes

1320917972是Unix时间戳,使用自1970年1月1日00:00:00 UTC以来的秒数。您可以使用TimeUnit类进行单位转换 - 从System.currentTimeMillis()到秒。

String timeStamp = String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()));

sealskej answered 2019-03-09T00:35:45Z

22 votes

您可以使用SimpleDateFormat类:

SimpleDateFormat s = new SimpleDateFormat("ddMMyyyyhhmmss");
String format = s.format(new Date());
Pratik Butani answered 2019-03-09T00:36:16Z
20 votes

使用以下方法获取当前时间戳。 这对我来说可以。

/**
*
* @return yyyy-MM-dd HH:mm:ss formate date as string
*/
public static String getCurrentTimeStamp(){
try {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currentDateTime = dateFormat.format(new Date()); // Find todays date
return currentDateTime;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
Hits answered 2019-03-09T00:36:47Z

9 votes

它很简单:

long millis = new Date().getTime();

如果你想要特定的格式,那么你需要像下面的格式化程序

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String millisInString = dateFormat.format(new Date());
Pranav answered 2019-03-09T00:37:25Z
8 votes

这是一个可以在文件名中使用的人类可读时间戳,以防万一有人需要我需要的东西:

package com.example.xyz;
import android.text.format.Time;
/**
* Clock utility.
*/
public class Clock {
/**
* Get current time in human-readable form.
* @return current time as a string.
*/
public static String getNow() {
Time now = new Time();
now.setToNow();
String sTime = now.format("%Y_%m_%d %T");
return sTime;
}
/**
* Get current time in human-readable form without spaces and special characters.
* The returned value may be used to compose a file name.
* @return current time as a string.
*/
public static String getTimeStamp() {
Time now = new Time();
now.setToNow();
String sTime = now.format("%Y_%m_%d_%H_%M_%S");
return sTime;
}
}
18446744073709551615 answered 2019-03-09T00:37:52Z
1 votes
java.time

我想提出现代的答案。

String ts = String.valueOf(Instant.now().getEpochSecond());

System.out.println(ts);

刚刚运行时的输出:

1543320466

虽然划分1000对许多人来说并不会让人感到惊讶,但是自己的时间转换很难快速阅读,所以当你可以避免它时,这是一个坏习惯。

我使用的java.time类是java.time的一部分,java.time是现代Java日期和时间API。 它内置于新的Android版本,API级别26及更高版本。 如果你是为较旧的Android编程,你可能会得到后端,见下文。 如果您不想这样做,可以理解,我仍然使用内置转换:

String ts = String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()));

System.out.println(ts);

这与sealskej的答案相同。 输出与以前相同。

问题:我可以在Android上使用java.time吗?

是的,java.time适用于较旧和较新的Android设备。 它至少需要Java 6。

在Java 8及更高版本和更新的Android设备上(来自API级别26),现代API内置。

在Java 6和7中获取ThreeTen Backport,新类的后端端口(适用于JSR 310的ThreeTen;请参见底部的链接)。

在(较旧的)Android上使用Android版的ThreeTen Backport。 它被称为ThreeTenABP。 并确保从子包中导入java.time的日期和时间类。

链接

Oracle教程:日期时间解释如何使用java.time。

Java规范请求(JSR)310,其中首先描述了java.time。

ThreeTen Backport项目,java.time的后端到Java 6和7(ThreeTen for JSR-310)。

ThreeTenABP,Android版ThreeTen Backport

问题:如何在Android项目中使用ThreeTenABP,有一个非常详尽的解释。

Ole V.V. answered 2019-03-09T00:40:37Z

0 votes

我建议使用Hits的答案,但添加Locale格式,这就是Android的方法  开发人员建议:

try {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
return dateFormat.format(new Date()); // Find todays date
} catch (Exception e) {
e.printStackTrace();
return null;
}
Faustino Gagneten answered 2019-03-09T00:41:02Z
0 votes

只是用

long millis = new Date().getTime();

以长毫米获得当前时间

Bilal Ahmad answered 2019-03-09T00:41:31Z

0 votes

试试这些

time.setText(String.valueOf(System.currentTimeMillis()));

和timeStamp到时间格式

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String dateString = formatter.format(new Date(Long.parseLong(time.getText().toString())));
time.setText(dateString);
Mujahid khan answered 2019-03-09T00:42:06Z