Android获取当前时间戳?

时间:2011-11-10 09:41:03

标签: android timestamp

我希望获得当前的时间戳: 1320917972

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

15 个答案:

答案 0 :(得分:255)

解决方案是:

Long tsLong = System.currentTimeMillis()/1000;
String ts = tsLong.toString();

答案 1 :(得分:78)

来自开发者博客:

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

答案 2 :(得分:28)

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

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

答案 3 :(得分:25)

您可以使用SimpleDateFormat类:

SimpleDateFormat s = new SimpleDateFormat("ddMMyyyyhhmmss");
String format = s.format(new Date());

答案 4 :(得分:21)

使用以下方法获取当前时间戳。它对我来说很好。

/**
 * 
 * @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;
    }
}

答案 5 :(得分:10)

它的用法很简单:

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

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

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String millisInString  = dateFormat.format(new Date());

答案 6 :(得分:8)

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

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

}

答案 7 :(得分:4)

这是最广为人知的方法的比较列表 enter image description here

答案 8 :(得分:2)

java.time

我想贡献现代的答案。

    String ts = String.valueOf(Instant.now().getEpochSecond());
    System.out.println(ts);

现在运行时的输出:

  

1543320466

虽然除以1000并不会让许多人感到惊讶,但是您自己进行时间转换可能很难很快地阅读,因此在避免时要养成一个坏习惯。

我正在使用的Instant类是java.time(现代Java日期和时间API)的一部分。它内置于API级别26以上的新Android版本。如果您正在为较旧的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,即新类的backport(JSR 310的ThreeTen;请参见底部的链接)。
  • 在(较旧的)Android上,使用Android版本的ThreeTen Backport。叫做ThreeTenABP。并确保您使用子包从org.threeten.bp导入日期和时间类。

链接

答案 9 :(得分:1)

只需使用

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

获得长时间的当前时间

答案 10 :(得分:1)

科特林解决方案:

val nowInEpoch = Instant.now().epochSecond

请确保您的最低SDK版本为26。

答案 11 :(得分:0)

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

for

答案 12 :(得分:0)

尝试这些

    NotificationCompat.Builder builder = new NotificationCompat.Builder(getActivity()).setSmallIcon(R.mipmap.ic_launcher). setContentTitle("Title").setContentText("Content"); 
    Notification notification = builder.build(); 
notification.ledARGB = Color.RED; 
notification.ledOffMS = 0; 
notification.ledOnMS = 0; 
notification.flags = notification.flags|Notification.FLAG_SHOW_LIGHTS;
 NotificationManager notificationManager = (NotificationManager) getActivity().getSystemService(NOTIFICATION_SERVICE); 
notificationManager.notify(101, notification);

和时间戳记转换为时间格式

    notification.ledOffMS = 0; 
notification.ledOnMS = 0;

答案 13 :(得分:0)

此代码是Kotlin版本。我还有另一个想法,在最后一位添加一个随机的随机整数,以提供方差的纪元时间。

科林版

val randomVariance = (0..100).shuffled().first()
val currentEpoch = (System.currentTimeMilis()/1000) + randomVariance

val deltaEpoch = oldEpoch - currentEpoch

我认为使用此Kode会更好,然后依赖android 26或更高版本

答案 14 :(得分:0)

更多关于Kotlin的答案。全班发布,方便复制/粘贴

object Utils {
    private const val DEFAULT_TIMESTAMP_FORMAT = "yyyy-MM-dd HH:mm:ss"

    /**
     * Method is used to get formatted date and time
     *
     * @return Current date and time
     */
    val currentDateTime: String
        get() {
            val calendar = Calendar.getInstance()
            val formatter = SimpleDateFormat(DEFAULT_TIMESTAMP_FORMAT, Locale.US)
            return formatter.format(calendar.time)
        }
}