Android конвертирует дату и время в миллисекунды

Как я могу получить путь к файлу из этого типа URI контента?

У вас нет, так как нет никакого файла вообще за Uri, не говоря уже о том, к которому вы можете получить доступ. Это Uri может указывать на:

  • Локальный файл на внешнем хранилище
  • Локальный файл на внутренней памяти для другого приложения
  • Локальный файл на съемном носителе
  • Локальный файл, который зашифрован и должен быть дешифрован на лету
  • Поток байтов, хранящихся в столбце BLOB в базе данных
  • Часть содержимого, которое должно быть загружено другим приложением первым
  • ... и т. д.

Все другие приложения, такие как Facebook, Google+ это делает

Нет, это не так. Они используют ContentResolver и:

  • openInputStream() для чтения в байтах, связанных с содержимым
  • getType(), чтобы получить тип MIME, связанный с содержимым
  • query() и OpenableColumns, чтобы получить размер и отображаемое имя, связанные с контентом
29
задан Pratik Dasa 17 October 2013 в 06:06
поделиться

9 ответов

Используйте метод ниже

String givenDateString = "Tue Apr 23 16:08:28 GMT+05:30 2013"; 
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
try {
    Date mDate = sdf.parse(givenDateString);
    long timeInMilliseconds = mDate.getTime();
    System.out.println("Date in milli :: " + timeInMilliseconds);
} catch (ParseException e) {
            e.printStackTrace();
}

Подробнее о строках даты и времени .

78
ответ дан Chad Bingham 17 October 2013 в 06:06
поделиться

попробуй это ...

Calendar calendar = Calendar.getInstance();
calendar.set(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth(), 
             timePicker.getCurrentHour(), timePicker.getCurrentMinute(), 0);
long startTime = calendar.getTimeInMillis();
8
ответ дан 17 October 2013 в 06:06
поделиться

Преобразование строки даты и времени в миллисекунды:

 public static final String DATE_TIME_FORMAT = "MM/dd/yyyy HH:mm:ss a";

или

  public static final String DATE_TIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ss";

или

  public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ssZZZZZ";
  //TimeZone.getAvailableIds() to list all timezone ids
  String timeZone = "EST5EDT";//it can be anything timezone like IST, GMT.
  String time = "2/21/2018 7:41:00 AM";

 public static long[] convertTimeInMillis(String dateTimeFormat, String timeZone, String... times) throws ParseException {

   SimpleDateFormat dateFormat = new SimpleDateFormat(dateTimeFormat, Locale.getDefault());
   dateFormat.setTimeZone(TimeZone.getTimeZone(timeZone));
   long[] ret = new long[times.length];
   for (int i = 0; i < times.length; i++) {
      String timeWithTZ = times[i] + " "+timeZone;
      Date d = dateFormat.parse(timeWithTZ);
      ret[i] = d.getTime();
    }
  return ret;

}

// миллисекунд до dateString

  public static String convertTimeInMillisToDateString(long timeInMillis, String DATE_TIME_FORMAT) {
     Date d = new Date(timeInMillis);
     SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
     return sdf.format(d);
  }
2
ответ дан Naresh Palle 17 October 2013 в 06:06
поделиться

Вы можете использовать этот код

long miliSecsDate = milliseconds ("2015-06-04");
Log.d("miliSecsDate", " = "+miliSecsDate);

    public long milliseconds(String date) 
    {
        //String date_ = date;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        try
        {
            Date mDate = sdf.parse(date);
            long timeInMilliseconds = mDate.getTime();
            System.out.println("Date in milli :: " + timeInMilliseconds);
            return timeInMilliseconds;
        }
        catch (ParseException e) 
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return 0;
    }
4
ответ дан Rumit Patel 17 October 2013 в 06:06
поделиться

В Котлине

Просто используйте

timeInMilSeconds = date.time

, где timeInMilSeconds - миллисекунды (var timeInMilSeconds: Long), а date - Дата

2
ответ дан KishanSolanki124 17 October 2013 в 06:06
поделиться
Date beginupd = new Date(cursor1.getLong(1));

Эта переменная beginupd содержит формат

Wed Oct 12 11:55:03 GMT+05:30 2011

long millisecond = beginupd.getTime();

Date.getTime() JavaDoc states:

Возвращает количество миллисекунд с 1 января 1970 года, 00:00:00 по Гринвичу, представленное этим объектом Date.

2
ответ дан kalyan pvs 17 October 2013 в 06:06
поделиться

Просто для дополнения данных ответов, если вам нужно преобразовать время, указанное в дате, в другие единицы времени, вы можете использовать TimeUnit API

Пример:

TimeUnit.MILLISECONDS.toMinutes(millis)
0
ответ дан André Sousa 17 October 2013 в 06:06
поделиться

Попробуйте это в Kotlin,

val calendar = Calendar.getInstance()
val UniqueID = calendar.timeInMillis

тот же код на Java,

Calendar calendar = Calendar.getInstance(); long time = calendar.getTimeInMillis();
1
ответ дан Rajesh Naddy 17 October 2013 в 06:06
поделиться

Android 26 и выше

Conversation from epoch to UTC date time and Device date time

public class TimeConversionUtil {

public static long getCurrentEpochUTC() {
    return Instant.now(Clock.systemUTC()).toEpochMilli();
}

public static String deviceDateTimeString(long epochMilliUtc) {
    Instant instant = Instant.ofEpochMilli(epochMilliUtc);
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM dd, yyyy, hh:mm:ss a", Locale.US).withZone(ZoneId.systemDefault());
    return formatter.format(instant);
}

public static String uTCDateTimeString(long epochMilliUtc) {
    Instant instant = Instant.ofEpochMilli(epochMilliUtc);
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM dd, yyyy, hh:mm:ss a", Locale.US).withZone(ZoneId.of("UTC"));
    return formatter.format(instant);

}

public static long convertDateStringToLongUTC(String stringUTCDate) {
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM dd, yyyy, hh:mm:ss a", Locale.ENGLISH);
    LocalDateTime localDate = LocalDateTime.parse(stringUTCDate, formatter);
    long timeInMilliseconds = localDate.atOffset(ZoneOffset.UTC).toInstant().toEpochMilli();
    return timeInMilliseconds;
}

}

@Test
public void timeConversionTest() {
    long currentTimeUtc = Instant.now(Clock.systemUTC()).toEpochMilli();
    String utc = TimeConversionUtil.uTCDateTimeString(currentTimeUtc);
    Long utcLongTime = TimeConversionUtil.convertDateStringToLongUTC(utc);
    String utc1 = TimeConversionUtil.uTCDateTimeString(utcLongTime);
    assertTrue(utc.equalsIgnoreCase(utc1));
}
0
ответ дан 27 November 2019 в 06:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: