nashorn/samples/datetime.js
author attila
Fri, 13 Nov 2015 16:21:22 +0100
changeset 33884 e534af80b09b
parent 32523 d8e365854b3c
permissions -rw-r--r--
8142924: ES6 symbols created with Symbol.for should deserialize to canonical instances Reviewed-by: hannesw, lagergren, sundar
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
32523
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
     1
/*
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
     2
 * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
     3
 *
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
     4
 * Redistribution and use in source and binary forms, with or without
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
     5
 * modification, are permitted provided that the following conditions
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
     6
 * are met:
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
     7
 *
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
     8
 *   - Redistributions of source code must retain the above copyright
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
     9
 *     notice, this list of conditions and the following disclaimer.
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    10
 *
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    11
 *   - Redistributions in binary form must reproduce the above copyright
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    12
 *     notice, this list of conditions and the following disclaimer in the
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    13
 *     documentation and/or other materials provided with the distribution.
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    14
 *
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    15
 *   - Neither the name of Oracle nor the names of its
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    16
 *     contributors may be used to endorse or promote products derived
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    17
 *     from this software without specific prior written permission.
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    18
 *
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    19
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    20
 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    21
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    22
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    23
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    24
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    25
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    26
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    27
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    28
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    29
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    30
 */
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    31
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    32
// converting b/w JavaScript Date and Java LocalDateTime
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    33
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    34
// JavaScript Date with current time
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    35
var d = new Date();
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    36
print(d);
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    37
 
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    38
// Java 8 java.time classes used
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    39
var Instant = java.time.Instant;
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    40
var LocalDateTime = java.time.LocalDateTime;
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    41
var ZoneId = java.time.ZoneId;
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    42
 
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    43
// Date.prototype.getTime
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    44
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    45
// getTime() method returns the numeric value corresponding to the time
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    46
// for the specified date according to universal time. The value returned
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    47
// by the getTime() method is the number of milliseconds since 1 January 1970 00:00:00 UTC.
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    48
// See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    49
 
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    50
// Java Instant.ofEpochMilli to convert time in milliseconds to Instant object
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    51
// https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html#ofEpochMilli-long-
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    52
 
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    53
var instant = Instant.ofEpochMilli(d.getTime());
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    54
 
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    55
// Instant to LocalDateTime using LocalDateTime.ofInstant
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    56
// https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html#ofInstant-java.time.Instant-java.time.ZoneId-
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    57
 
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    58
var ldt = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    59
print(ldt);
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    60
 
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    61
// converting a LocalDateTime to JavaScript Date
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    62
// convert LocalDateTime to Instant first
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    63
// https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html#atZone-java.time.ZoneId-
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    64
 
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    65
var instant = ldt.atZone(ZoneId.systemDefault()).toInstant();
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    66
 
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    67
// instant to to epoch milliseconds
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    68
// https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html#toEpochMilli--
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    69
// and then to JavaScript Date from time in milliseconds
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    70
// https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    71
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    72
var d1 = new Date(instant.toEpochMilli());
d8e365854b3c 8135054: Add more samples to nashorn samples directory
sundar
parents:
diff changeset
    73
print(d1);