Unix 24 часа

Ответить
skull
Сообщения: 48
Зарегистрирован: 22 апр 2014, 15:49

Unix 24 часа

Сообщение skull » 17 май 2014, 12:20

получаю Unix timeStamp так

long timeStamp = System.currentTimeMillis() / 1000L;

но там получаю 12 часовое время, а мне нужно 24 часовое..

как это сделать ?


пример: я прогу запускаю в 13:05:22 а он мне выдает 01:05:22 в Unix формате..

Viewer
Сообщения: 180
Зарегистрирован: 30 апр 2014, 11:42

Re: Unix 24 часа

Сообщение Viewer » 17 май 2014, 13:21

Это просто число ms прошедших с 01.01.1970
Все зависит от форматирования при выводе.
Если для форматирования используется SimpleDateFormat, то "h" - выводит часы в 12-ти часовом формате, а "H" в 24-м

new SimpleDateFormat("h:mm:ss a") - 12-ти часовой формат с указанием AM/PM
new SimpleDateFormat("H:mm:ss") - 24-х часовой формат.

skull
Сообщения: 48
Зарегистрирован: 22 апр 2014, 15:49

Re: Unix 24 часа

Сообщение skull » 17 май 2014, 13:32

Viewer писал(а):Это просто число ms прошедших с 01.01.1970
Все зависит от форматирования при выводе.
Если для форматирования используется SimpleDateFormat, то "h" - выводит часы в 12-ти часовом формате, а "H" в 24-м

new SimpleDateFormat("h:mm:ss a") - 12-ти часовой формат с указанием AM/PM
new SimpleDateFormat("H:mm:ss") - 24-х часовой формат.
я уже запарелся с SimpleDateFormat не как не могу нормально сделать.

и так пробовал вертеть и сяк :)
но все равно не получается получить текущее время в Unix 24 формате..

Вот в итоге до чего дошел (но все равно не правильно :(( )

Код: Выделить всё

    @Override
    public void onCreate() {
    super.onCreate();
    
     

	try {
	    DateFormat  format = new SimpleDateFormat("HH:mm:ss dd:MM:yyyy"); 
	    Date date = new Date();
	    String temp2 = format.format(date); 

	    Date temp3;
		temp3 = format.parse(temp2);
		 Calendar calendar = Calendar.getInstance();
			calendar.setTime(temp3);   // assigns calendar to given date 
			 endtime = componentTimeToTimestamp(
			    		calendar.get(Calendar.YEAR),
			    		calendar.get(Calendar.MONTH),
			    		calendar.get(Calendar.DAY_OF_MONTH),
			    		calendar.get(Calendar.HOUR),
			    		calendar.get(Calendar.MINUTE));//ystem.currentTimeMillis() / 1000L;// DateFormat.format("hh:mm:ss dd-MM-yyyy",new Date());

			 
			 
			begintime = componentTimeToTimestamp(
			    		calendar.get(Calendar.YEAR),
			    		calendar.get(Calendar.MONTH),
			    		calendar.get(Calendar.DAY_OF_MONTH)-1,
			    		calendar.get(Calendar.HOUR),
			    		calendar.get(Calendar.MINUTE));//ystem.currentTimeMillis() / 1000L;// DateFormat.format("hh:mm:ss dd-MM-yyyy",new Date());

			 
			 
	} catch (java.text.ParseException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} 
 
  
		
   
          
    }
    
    public long componentTimeToTimestamp(int year, int month, int day, int hour, int minute) {

	    Calendar c = Calendar.getInstance();
	    c.set(Calendar.YEAR, year);
	    c.set(Calendar.MONTH, month);
	    c.set(Calendar.DAY_OF_MONTH, day);
	    c.set(Calendar.HOUR, hour);
	    c.set(Calendar.MINUTE, minute);
	    c.set(Calendar.SECOND, 0);
	    c.set(Calendar.MILLISECOND, 0);

	    return (long) (c.getTimeInMillis() / 1000L);
	}
	

Viewer
Сообщения: 180
Зарегистрирован: 30 апр 2014, 11:42

Re: Unix 24 часа

Сообщение Viewer » 17 май 2014, 13:52

[syntax=java]SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss dd:MM:yyyy");
Date date = new Date();
String temp2 = format.format(date);[/syntax]
Этого разве не достаточно?
temp2 это и есть строка с текущей датой и временем в указанном формате

А DateFormat это формат даты и времени для текущей локализации (если у вас в текущей локализации использован 12-ти часовой формат, то он и будет выводиться.)

skull
Сообщения: 48
Зарегистрирован: 22 апр 2014, 15:49

Re: Unix 24 часа

Сообщение skull » 17 май 2014, 14:05

Еще обнаружил что

при выполнении след. кода

Код: Выделить всё

appState.begintime = componentTimeToTimestamp(
		date1.getYear(),date1.getMonth(),
		date1.getDayOfMonth(),time1.getCurrentHour(),
		time1.getCurrentMinute());
		    	Log.i("Times    ", time1.getCurrentHour().toString()
					);

public long componentTimeToTimestamp(int year, int month, int day, int hour, int minute) {

	    Calendar c = Calendar.getInstance();
	    c.set(Calendar.YEAR, year);
	    c.set(Calendar.MONTH, month);
	    c.set(Calendar.DAY_OF_MONTH, day);
	    c.set(Calendar.HOUR, hour);
	    c.set(Calendar.MINUTE, minute);
	    c.set(Calendar.SECOND, 0);
	    c.set(Calendar.MILLISECOND, 0);

	    return (long) (c.getTimeInMillis() / 1000L);
	}
	
time1 = TimePicker 24 часовой

вот если устанавливаю время например 01:00:00 мой код в Unix конвертирует его как 13:00:00 в чем может быть дело ?

Viewer
Сообщения: 180
Зарегистрирован: 30 апр 2014, 11:42

Re: Unix 24 часа

Сообщение Viewer » 17 май 2014, 14:21

Просто нужно внимательно проверить код и не путать SimpleDateFormat и DateFormat (у вас там все в кучу, как я понял)
Как укажете в SimpleDateFormat так и будет выводиться.

skull
Сообщения: 48
Зарегистрирован: 22 апр 2014, 15:49

Re: Unix 24 часа

Сообщение skull » 17 май 2014, 15:20

Viewer писал(а):Просто нужно внимательно проверить код и не путать SimpleDateFormat и DateFormat (у вас там все в кучу, как я понял)
Как укажете в SimpleDateFormat так и будет выводиться.
Спасибо !

вот так у меня получилось то что мне нужно

Код: Выделить всё

 public void onClick(View v) 
		    {
		    	
		   SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
		   Time time = new Time();
		   time.set(00, time1.getCurrentMinute(), time1.getCurrentHour(), date1.getDayOfMonth(),date1.getMonth() ,date1.getYear());
		   
		   try {
			Date hh = dateFormat.parse(time.format("%d.%m.%Y %H:%M:%S"));
			Log.i("date    ", Long.toString(hh.getTime() / 1000L));
		
			appState.begintime = hh.getTime() / 1000L;
			time.set(00, time2.getCurrentMinute(), time2.getCurrentHour(), date2.getDayOfMonth(),date2.getMonth() ,date2.getYear());
			
			hh = dateFormat.parse(time.format("%d.%m.%Y %H:%M:%S"));  
			appState.endtime =hh.getTime() / 1000L; 
			Log.i("date    ", Long.toString(hh.getTime() / 1000L));
		   
		   } catch (ParseException e) {

			e.printStackTrace();
		}

Nastasia
Сообщения: 6
Зарегистрирован: 06 янв 2014, 03:46

Re: Unix 24 часа

Сообщение Nastasia » 21 май 2014, 00:56

Здравствуйте. У меня хранится дата в String в формате "dd-M-yyyy". Как ее переконвертировать в long и сделать в миллисекундах, чтоб можно было эту дату отправить в функцию setMaxDate?
Спасибо.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Unix 24 часа

Сообщение rezak90 » 21 май 2014, 01:05

Nastasia писал(а):Здравствуйте. У меня хранится дата в String в формате "dd-M-yyyy". Как ее переконвертировать в long и сделать в миллисекундах, чтоб можно было эту дату отправить в функцию setMaxDate?
Спасибо.
First url from Google
http://stackoverflow.com/questions/1247 ... illseconds
R.id.team
Политика на форуме запрещена

Ответить