我想要这样的当前时间戳:1320917972
int time = (int) (System.currentTimeMillis());
Timestamp tsTemp = new Timestamp(time);
String ts = tsTemp.toString();
我想要这样的当前时间戳:1320917972
int time = (int) (System.currentTimeMillis());
Timestamp tsTemp = new Timestamp(time);
String ts = tsTemp.toString();
Answers:
解决方案是:
Long tsLong = System.currentTimeMillis()/1000;
String ts = tsLong.toString();
来自开发人员博客:
System.currentTimeMillis()
是表示自该纪元以来的毫秒数的标准“墙上”时钟(时间和日期)。挂钟可以由用户或电话网络设置(请参见setCurrentTimeMillis(long)),因此时间可能无法预测地向后或向前跳跃。仅当与实际日期和时间的对应关系很重要时才应使用此时钟,例如在日历或闹钟应用程序中。间隔或经过的时间测量应使用其他时钟。如果您正在使用System.currentTimeMillis()
,考虑听ACTION_TIME_TICK
,ACTION_TIME_CHANGED
并ACTION_TIMEZONE_CHANGED
意向广播找出来的时候,时间的变化。
System.nanoTime()
是替代方法,System.currentTimeMillis()
并且没有不可预测的波动,并且旨在测量持续时间差异。
System.nanoTime()
不适合显示墙上时钟时间。为此,请System.currentTimeMillis()
改用。
您可以使用SimpleDateFormat类:
SimpleDateFormat s = new SimpleDateFormat("ddMMyyyyhhmmss");
String format = s.format(new Date());
使用以下方法获取当前时间戳。这对我来说可以。
/**
*
* @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;
}
}
这是一个易于理解的时间戳,可以在文件名中使用,以防万一有人需要与我相同的东西:
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;
}
}
我想贡献现代的答案。
String ts = String.valueOf(Instant.now().getEpochSecond());
System.out.println(ts);
刚运行时的输出:
1543320466
虽然除以1000并不会让很多人感到意外,但您自己进行时间转换可能很难很快地读懂,因此在避免时要养成一个坏习惯。
Instant
我正在使用的类是java.time(现代Java日期和时间API)的一部分。它内置在新的Android版本(API级别26及更高版本)中。如果您正在为较旧的Android编程,则可能会获得反向移植,请参见下文。如果您不想这样做,可以理解,我仍然会使用内置转换:
String ts = String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()));
System.out.println(ts);
这与Sealskej的答案相同。输出与以前相同。
是的,java.time在旧的和更新的Android设备上都能很好地工作。它至少需要Java 6。
org.threeten.bp
带有子包的日期和时间类。java.time
。java.time
第一被描述。java.time
Java 6和7的反向移植(JSR-310的ThreeTen)。此代码是Kotlin版本。我有另一个想法,在最后一位添加一个随机的随机整数,以提供方差的纪元时间。
Kotlin版本
val randomVariance = (0..100).shuffled().first()
val currentEpoch = (System.currentTimeMilis()/1000) + randomVariance
val deltaEpoch = oldEpoch - currentEpoch
我认为使用此Kode会更好,然后依赖android 26或更高版本
java.util.Date
,java.util.Calendar
和Timestamp
现在的遗产,由取代java.time类。在ThreeTen-Backport项目中,大多数java.time功能都被反向移植到Java 6和Java 7 。在ThreeTenABP项目中进一步适用于早期的Android 。请参阅如何使用ThreeTenABP…。