У мене є дата всередині рядка, щось на зразок «12 грудня 2012». Як я можу перетворити це в мілісекунди (довгі)?
У мене є дата всередині рядка, щось на зразок «12 грудня 2012». Як я можу перетворити це в мілісекунди (довгі)?
Відповіді:
Використання SimpleDateFormat
String string_date = "12-December-2012";
SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy");
try {
Date d = f.parse(string_date);
long milliseconds = d.getTime();
} catch (ParseException e) {
e.printStackTrace();
}
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date date = (Date)formatter.parse("12-December-2012");
long mills = date.getTime();
Настав час хтось дати сучасну відповідь на це питання. У 2012 році, коли було задано питання, відповіді, також опубліковані тоді, були хорошими відповідями. Чому відповіді, опубліковані у 2016 році, також використовують давно застарілі класи, SimpleDateFormat
і Date
це для мене трохи загадка. java.time
, сучасний API дати та часу Java, також відомий як JSR-310, набагато приємніший для роботи. Ви можете використовувати його на Android через ThreeTenABP, див. Це запитання: Як використовувати ThreeTenABP в Android Project .
Для більшості цілей я рекомендую використовувати мілісекунди від епохи на початку дня в UTC . Щоб отримати їх:
DateTimeFormatter dateFormatter
= DateTimeFormatter.ofPattern("d-MMMM-uuuu", Locale.ENGLISH);
String stringDate = "12-December-2012";
long millisecondsSinceEpoch = LocalDate.parse(stringDate, dateFormatter)
.atStartOfDay(ZoneOffset.UTC)
.toInstant()
.toEpochMilli();
System.out.println(millisecondsSinceEpoch);
Це друкує:
1355270400000
Якщо вам потрібен час на початку дня в якомусь конкретному часовому поясі, вкажіть цей часовий пояс замість UTC, наприклад:
.atStartOfDay(ZoneId.of("Asia/Karachi"))
Як і слід було очікувати, це дає дещо інший результат:
1355252400000
Ще один момент, на який слід звернути увагу, не забудьте вказати локаль для вашого DateTimeFormatter
. Я прийняв грудень англійською мовою, є й інші мови, де цей місяць називається однаковим, тому, будь ласка, самостійно оберіть відповідну мову. Якщо ви не вказали локаль, програма форматування використовувала б налаштування мови JVM, яка може працювати в багатьох випадках, а потім несподівано не вдалася одного дня, коли ви запускаєте програму на пристрої з іншою настройкою мови.
java.util.Date
датиНайпростіший спосіб - використання дати за допомогою Date () та getTime ()
Date dte=new Date();
long milliSeconds = dte.getTime();
String strLong = Long.toString(milliSeconds);
System.out.println(milliSeconds)
використовуючи simpledateformat, ви можете легко його досягти.
1) Спочатку перетворіть рядок у java.Date за допомогою simpledateformatter.
2) Використовуйте метод getTime, щоб отримати кількість мілісекунд з дати
public class test {
public static void main(String[] args) {
String currentDate = "01-March-2016";
SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy");
Date parseDate = f.parse(currentDate);
long milliseconds = parseDate.getTime();
}
}
ще Приклад натисніть тут
Спробуйте нижче код
SimpleDateFormat f = new SimpleDateFormat("your_string_format", Locale.getDefault());
Date d = null;
try {
d = f.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
long timeInMillis = d.getTime();