Re: [PHP] From 24/7/2013 to 2013-07-24

2013-07-26 Thread Tamara Temple


augh, apologies; i didn't see all the other replies….
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] From 24/7/2013 to 2013-07-24

2013-07-26 Thread Tamara Temple

On Jul 26, 2013, at 4:18 AM, Karl-Arne Gjersøyen  wrote:

> Below is something I try that ofcourse not work because of rsosort.
> Here is my code:
> ---
> $lagret_dato = $_POST['lagret_dato'];
>foreach($lagret_dato as $dag){
> 
>$dag = explode("/", $dag);
>   rsort($dag);

You want to reverse the array, not sort it :) array_reverse().

>$dag = implode("-", $dag);
>var_dump($dag);
> 
> What I want is a way to rewrite contents of a variable like this:
> 
> From 24/7/2013 to 2013-07-24
> 
> Is there a way in PHP to do this?
> 
> Thank you very much.
> 
> Karl

Also, I thought the locale for European countries used periods as separators, 
not slashes; slashes for North America…

*shrug*


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] From 24/7/2013 to 2013-07-24

2013-07-26 Thread Robert Cummings

On 13-07-26 05:33 PM, Jim Giner wrote:

On 7/26/2013 5:29 PM, Robert Cummings wrote:

And so it follows, that my solution, thus far, is the only solution
posted that actually meets the requirements. Why you think my solution
does not perform is beyond me since a simple run of the code would
output the correct answer (yes I did test)-- mine also presumes the
European ordering for all input with components separated by a slash.

Cheers,
Rob.

>

And my solution doesn't work?



I don't see any padding happening in your solution. Your solution produced:

2013-7-24

The required solution is:

2013-07-24

:)

Cheers,
Rob.
--
E-Mail Disclaimer: Information contained in this message and any
attached documents is considered confidential and legally protected.
This message is intended solely for the addressee(s). Disclosure,
copying, and distribution are prohibited unless authorized.

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] From 24/7/2013 to 2013-07-24

2013-07-26 Thread Jim Giner

On 7/26/2013 5:29 PM, Robert Cummings wrote:

On 13-07-26 04:38 PM, jomali wrote:

On Fri, Jul 26, 2013 at 1:08 PM, Robert Cummings
wrote:


On 13-07-26 11:42 AM, jomali wrote:


On Fri, Jul 26, 2013 at 5:18 AM, Karl-Arne Gjersøyen

wrote:


  Below is something I try that ofcourse not work because of rsosort.

Here is my code:
---
$lagret_dato = $_POST['lagret_dato'];
  foreach($lagret_dato as $dag){

  $dag = explode("/", $dag);
 rsort($dag);
  $dag = implode("-", $dag);
  var_dump($dag);

What I want is a way to rewrite contents of a variable like this:

  From 24/7/2013 to 2013-07-24

Is there a way in PHP to do this?

Thank you very much.

Karl



$conv_date = str_replace('/', '-','24/7/2013');
echo date('Y-m-d', strtotime($conv_date));
Result: 2013-07-24



It would be better if you reformatted first since this is ambiguous when
you have the following date:

 6/7/2013




Here's a completely unambiguous solution:



Cheers,
Rob.


The original question was  about reformatting a European (Day/Month/Year)
date. Your solution does not address this problem. Mine assumes the
European date format explicitly.


Jomali,

Your solution is broken. The original poster requested the following:

  What I want is a way to rewrite contents of a variable like this:
 
    From 24/7/2013 to 2013-07-24

Your solution makes use of the strtodate(). A useful strategy EXCEPT (as
you have already noted) the date follows the European formatting rules
of dd/mm/ since the 24 as the first number makes that obvious.
HOWEVER, you failed to realize the following (from the PHP online manual):

 Dates in the m/d/y or d-m-y formats are disambiguated by looking
 at the separator between the various components: if the separator
 is a slash (/), then the American m/d/y is assumed; whereas if
 the separator is a dash (-) or a dot (.), then the European d-m-y
 format is assumed.

And so, as soon as an abiguous date arises, the solution will be
incorrect because strtotime() will presume an American format due to the
appearance of the slash instead of the hyphen. It is dangerous to rely
on magical functions like strtotime() unless you completely understand
how ambiguity is resolved.

Another solution that was posted only re-ordered the elements and you
likely noticed that there is a single digit 7 in the source date and in
the response date it has been 0 padded to conform to the standard
-mm-dd date format. The other solution does not do this and so it is
also incorrect.

And so it follows, that my solution, thus far, is the only solution
posted that actually meets the requirements. Why you think my solution
does not perform is beyond me since a simple run of the code would
output the correct answer (yes I did test)-- mine also presumes the
European ordering for all input with components separated by a slash.

Cheers,
Rob.

And my solution doesn't work?

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] From 24/7/2013 to 2013-07-24

2013-07-26 Thread Robert Cummings

On 13-07-26 04:38 PM, jomali wrote:

On Fri, Jul 26, 2013 at 1:08 PM, Robert Cummings wrote:


On 13-07-26 11:42 AM, jomali wrote:


On Fri, Jul 26, 2013 at 5:18 AM, Karl-Arne Gjersøyen 
wrote:


  Below is something I try that ofcourse not work because of rsosort.

Here is my code:
---
$lagret_dato = $_POST['lagret_dato'];
  foreach($lagret_dato as $dag){

  $dag = explode("/", $dag);
 rsort($dag);
  $dag = implode("-", $dag);
  var_dump($dag);

What I want is a way to rewrite contents of a variable like this:

  From 24/7/2013 to 2013-07-24

Is there a way in PHP to do this?

Thank you very much.

Karl



$conv_date = str_replace('/', '-','24/7/2013');
echo date('Y-m-d', strtotime($conv_date));
Result: 2013-07-24



It would be better if you reformatted first since this is ambiguous when
you have the following date:

 6/7/2013




Here's a completely unambiguous solution:



Cheers,
Rob.


The original question was  about reformatting a European (Day/Month/Year)
date. Your solution does not address this problem. Mine assumes the
European date format explicitly.


Jomali,

Your solution is broken. The original poster requested the following:

 What I want is a way to rewrite contents of a variable like this:

   From 24/7/2013 to 2013-07-24

Your solution makes use of the strtodate(). A useful strategy EXCEPT (as 
you have already noted) the date follows the European formatting rules 
of dd/mm/ since the 24 as the first number makes that obvious. 
HOWEVER, you failed to realize the following (from the PHP online manual):


Dates in the m/d/y or d-m-y formats are disambiguated by looking
at the separator between the various components: if the separator
is a slash (/), then the American m/d/y is assumed; whereas if
the separator is a dash (-) or a dot (.), then the European d-m-y
format is assumed.

And so, as soon as an abiguous date arises, the solution will be 
incorrect because strtotime() will presume an American format due to the 
appearance of the slash instead of the hyphen. It is dangerous to rely 
on magical functions like strtotime() unless you completely understand 
how ambiguity is resolved.


Another solution that was posted only re-ordered the elements and you 
likely noticed that there is a single digit 7 in the source date and in 
the response date it has been 0 padded to conform to the standard 
-mm-dd date format. The other solution does not do this and so it is 
also incorrect.


And so it follows, that my solution, thus far, is the only solution 
posted that actually meets the requirements. Why you think my solution 
does not perform is beyond me since a simple run of the code would 
output the correct answer (yes I did test)-- mine also presumes the 
European ordering for all input with components separated by a slash.


Cheers,
Rob.
--
E-Mail Disclaimer: Information contained in this message and any
attached documents is considered confidential and legally protected.
This message is intended solely for the addressee(s). Disclosure,
copying, and distribution are prohibited unless authorized.

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



RES: [PHP] From 24/7/2013 to 2013-07-24

2013-07-26 Thread Alejandro Michelin Salomon
jomali:

Use this:

echo preg_replace('#(\d{2})/(\d{2})/(\d{4})#' , "\\3-\\2-\\1", '24/07/2013'
); RESULT => 2013-07-24

Alejandro M.S
-Mensagem original-
De: jomali [mailto:jomali3...@gmail.com] 
Enviada em: sexta-feira, 26 de julho de 2013 17:38
Para: Robert Cummings
Cc: Karl-Arne Gjersøyen; PHP Mailinglist
Assunto: Re: [PHP] From 24/7/2013 to 2013-07-24

On Fri, Jul 26, 2013 at 1:08 PM, Robert Cummings
wrote:

> On 13-07-26 11:42 AM, jomali wrote:
>
>> On Fri, Jul 26, 2013 at 5:18 AM, Karl-Arne Gjersøyen 
>> > >wrote:
>>
>>  Below is something I try that ofcourse not work because of rsosort.
>>> Here is my code:
>>> ---
>>> $lagret_dato = $_POST['lagret_dato'];
>>>  foreach($lagret_dato as $dag){
>>>
>>>  $dag = explode("/", $dag);
>>> rsort($dag);
>>>  $dag = implode("-", $dag);
>>>  var_dump($dag);
>>>
>>> What I want is a way to rewrite contents of a variable like this:
>>>
>>>  From 24/7/2013 to 2013-07-24
>>>
>>> Is there a way in PHP to do this?
>>>
>>> Thank you very much.
>>>
>>> Karl
>>>
>>>
>> $conv_date = str_replace('/', '-','24/7/2013'); echo date('Y-m-d', 
>> strtotime($conv_date));
>> Result: 2013-07-24
>>
>
> It would be better if you reformatted first since this is ambiguous 
> when you have the following date:
>
> 6/7/2013
>

> Here's a completely unambiguous solution:
>
> 
> $old = '24/7/2013';
>
> $paddy = function( $bit ){ return str_pad( $bit, 2, '0', 
> STR_PAD_LEFT ); };
> $new = implode( '-', array_map( $paddy, array_reverse( explode( 
> '/', $old ) ) ) );
>
> echo $new."\n";
>
> ?>
>
> Cheers,
> Rob.
> --
> E-Mail Disclaimer: Information contained in this message and any 
> attached documents is considered confidential and legally protected.
> This message is intended solely for the addressee(s). Disclosure, 
> copying, and distribution are prohibited unless authorized.
>

The original question was  about reformatting a European (Day/Month/Year)
date. Your solution does not address this problem. Mine assumes the European
date format explicitly.


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] From 24/7/2013 to 2013-07-24

2013-07-26 Thread jomali
On Fri, Jul 26, 2013 at 1:08 PM, Robert Cummings wrote:

> On 13-07-26 11:42 AM, jomali wrote:
>
>> On Fri, Jul 26, 2013 at 5:18 AM, Karl-Arne Gjersøyen > >wrote:
>>
>>  Below is something I try that ofcourse not work because of rsosort.
>>> Here is my code:
>>> ---
>>> $lagret_dato = $_POST['lagret_dato'];
>>>  foreach($lagret_dato as $dag){
>>>
>>>  $dag = explode("/", $dag);
>>> rsort($dag);
>>>  $dag = implode("-", $dag);
>>>  var_dump($dag);
>>>
>>> What I want is a way to rewrite contents of a variable like this:
>>>
>>>  From 24/7/2013 to 2013-07-24
>>>
>>> Is there a way in PHP to do this?
>>>
>>> Thank you very much.
>>>
>>> Karl
>>>
>>>
>> $conv_date = str_replace('/', '-','24/7/2013');
>> echo date('Y-m-d', strtotime($conv_date));
>> Result: 2013-07-24
>>
>
> It would be better if you reformatted first since this is ambiguous when
> you have the following date:
>
> 6/7/2013
>

> Here's a completely unambiguous solution:
>
> 
> $old = '24/7/2013';
>
> $paddy = function( $bit ){ return str_pad( $bit, 2, '0', STR_PAD_LEFT
> ); };
> $new = implode( '-', array_map( $paddy, array_reverse( explode( '/',
> $old ) ) ) );
>
> echo $new."\n";
>
> ?>
>
> Cheers,
> Rob.
> --
> E-Mail Disclaimer: Information contained in this message and any
> attached documents is considered confidential and legally protected.
> This message is intended solely for the addressee(s). Disclosure,
> copying, and distribution are prohibited unless authorized.
>

The original question was  about reformatting a European (Day/Month/Year)
date. Your solution does not address this problem. Mine assumes the
European date format explicitly.


Re: [PHP] From 24/7/2013 to 2013-07-24

2013-07-26 Thread Robert Cummings

On 13-07-26 11:42 AM, jomali wrote:

On Fri, Jul 26, 2013 at 5:18 AM, Karl-Arne Gjersøyen wrote:


Below is something I try that ofcourse not work because of rsosort.
Here is my code:
---
$lagret_dato = $_POST['lagret_dato'];
 foreach($lagret_dato as $dag){

 $dag = explode("/", $dag);
rsort($dag);
 $dag = implode("-", $dag);
 var_dump($dag);

What I want is a way to rewrite contents of a variable like this:

 From 24/7/2013 to 2013-07-24

Is there a way in PHP to do this?

Thank you very much.

Karl



$conv_date = str_replace('/', '-','24/7/2013');
echo date('Y-m-d', strtotime($conv_date));
Result: 2013-07-24


It would be better if you reformatted first since this is ambiguous when 
you have the following date:


6/7/2013

Here's a completely unambiguous solution:

$paddy = function( $bit ){ return str_pad( $bit, 2, '0', 
STR_PAD_LEFT ); };
$new = implode( '-', array_map( $paddy, array_reverse( explode( 
'/', $old ) ) ) );


echo $new."\n";

?>

Cheers,
Rob.
--
E-Mail Disclaimer: Information contained in this message and any
attached documents is considered confidential and legally protected.
This message is intended solely for the addressee(s). Disclosure,
copying, and distribution are prohibited unless authorized.

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] From 24/7/2013 to 2013-07-24

2013-07-26 Thread jomali
On Fri, Jul 26, 2013 at 5:18 AM, Karl-Arne Gjersøyen wrote:

> Below is something I try that ofcourse not work because of rsosort.
> Here is my code:
> ---
> $lagret_dato = $_POST['lagret_dato'];
> foreach($lagret_dato as $dag){
>
> $dag = explode("/", $dag);
>rsort($dag);
> $dag = implode("-", $dag);
> var_dump($dag);
>
> What I want is a way to rewrite contents of a variable like this:
>
> From 24/7/2013 to 2013-07-24
>
> Is there a way in PHP to do this?
>
> Thank you very much.
>
> Karl
>

$conv_date = str_replace('/', '-','24/7/2013');
echo date('Y-m-d', strtotime($conv_date));
Result: 2013-07-24


RES: [PHP] From 24/7/2013 to 2013-07-24

2013-07-26 Thread Alejandro Michelin Salomon
Use this:

echo preg_replace('#(\d{2})/(\d{2})/(\d{4})#' , "\\3-\\2-\\1", '24/07/2013'
); RESULT => 2013-07-24

Alejandro M.S


-Mensagem original-
De: Jim Giner [mailto:jim.gi...@albanyhandball.com] 
Enviada em: sexta-feira, 26 de julho de 2013 11:12
Para: php-general@lists.php.net
Assunto: Re: [PHP] From 24/7/2013 to 2013-07-24

On 7/26/2013 10:10 AM, Jim Giner wrote:
> I think you should change from using 'rsort' ( a SORT function) to 
> 'array_reverse', a simple reverse function.
> Your example of what you desire is wrong.
> 24-7-2013 will give you the 2013-24-7 that you want.

oops.
I meant to say "will NOT give you the 2013-2407 that you want".


--
PHP General Mailing List (http://www.php.net/) To unsubscribe, visit:
http://www.php.net/unsub.php



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] From 24/7/2013 to 2013-07-24

2013-07-26 Thread Jim Giner

On 7/26/2013 10:10 AM, Jim Giner wrote:

I think you should change from using 'rsort' ( a SORT function) to
'array_reverse', a simple reverse function.
Your example of what you desire is wrong.
24-7-2013 will give you the 2013-24-7 that you want.


oops.
I meant to say "will NOT give you the 2013-2407 that you want".


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] From 24/7/2013 to 2013-07-24

2013-07-26 Thread Jim Giner
I think you should change from using 'rsort' ( a SORT function) to 
'array_reverse', a simple reverse function.

Your example of what you desire is wrong.
24-7-2013 will give you the 2013-24-7 that you want.
Here is my sample code.  Try it yourself.

**";
echo "Try using rsort";
$dagparts = explode("/",$dag[0]);
echo "dagparts: ";
var_dump($dagparts);
echo "**";
rsort($dagparts);
echo "sorted dagparts: ";
var_dump($dagparts);
echo "**";
$newdag = implode("-",$dagparts);
echo "newdag: ";
var_dump($newdag);
echo "**";
echo "Now use array_reverse";
$dagparts = explode("/",$dag[0]);
echo "dagparts: ";
var_dump($dagparts);
echo "**";
$dagparts = array_reverse($dagparts);
echo "REVERSED dagparts: ";
var_dump($dagparts);
echo "**";
$newdag = implode("-",$dagparts);
echo "newdag: ";
var_dump($newdag);
echo "**";


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] From 24/7/2013 to 2013-07-24

2013-07-26 Thread Karl-Arne Gjersøyen
2013/7/26 Davi Marcondes Moreira 

> Hi! I suggest you to try this:
>
> $foo = DateTime::createFromFormat('d/m/Y');
> $newDate = $foo->format('Y-m-d');
>


Thank you veyr much. With a small modification this work perfec!

Karl


>  Em 26/07/2013 09:19, "Karl-Arne Gjersøyen" 
> escreveu:
>
> Below is something I try that ofcourse not work because of rsosort.
>> Here is my code:
>> ---
>> $lagret_dato = $_POST['lagret_dato'];
>> foreach($lagret_dato as $dag){
>>
>> $dag = explode("/", $dag);
>>rsort($dag);
>> $dag = implode("-", $dag);
>> var_dump($dag);
>>
>> What I want is a way to rewrite contents of a variable like this:
>>
>> From 24/7/2013 to 2013-07-24
>>
>> Is there a way in PHP to do this?
>>
>> Thank you very much.
>>
>> Karl
>>
>


Re: [PHP] From 24/7/2013 to 2013-07-24

2013-07-26 Thread Přemysl Fiala

Hello,

try & - reference

 foreach($lagret_dato as &$dag) or something like this :-)

Premek.

On Fri, 26 Jul 2013 11:18:03 +0200, Karl-Arne Gjersøyen  
 wrote:



Below is something I try that ofcourse not work because of rsosort.
Here is my code:
---
$lagret_dato = $_POST['lagret_dato'];
foreach($lagret_dato as $dag){

$dag = explode("/", $dag);
   rsort($dag);
$dag = implode("-", $dag);
var_dump($dag);

What I want is a way to rewrite contents of a variable like this:

From 24/7/2013 to 2013-07-24

Is there a way in PHP to do this?

Thank you very much.

Karl



--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP] From 24/7/2013 to 2013-07-24

2013-07-26 Thread Karl-Arne Gjersøyen
Below is something I try that ofcourse not work because of rsosort.
Here is my code:
---
$lagret_dato = $_POST['lagret_dato'];
foreach($lagret_dato as $dag){

$dag = explode("/", $dag);
   rsort($dag);
$dag = implode("-", $dag);
var_dump($dag);

What I want is a way to rewrite contents of a variable like this:

>From 24/7/2013 to 2013-07-24

Is there a way in PHP to do this?

Thank you very much.

Karl