Pseudozones
, 3-4 , , . ! . , IST
- . CST
- , ( ).
. continent/region
, America/Montreal
, Africa/Casablanca
Pacific/Auckland
.
-, . , Locale
. CST
, Locale
Locale.CHINA
, , , CST
" ", " " .
, . Locale
. , , Locale
, CST
. , America/Chicago
America/Winnipeg
, CST
, Locale
.
Set< ZoneID > zones = new TreeSet<>() ;
zones.add( ZoneId.of( "America/Chicago" ) ;
zones.add( ZoneId.of( "America/Manitoba" ) ;
…
.appendZoneText( TextStyle.SHORT , zones )
…
, CST
MacOS MacBook, America/Los_Angeles
Locale.US
. , appendZoneText
(no Set
).
String input = "Nov 30, 2013 19:00:00.001930000 CST";
String basePattern = "MMM dd, yyyy HH:mm:ss";
DateTimeFormatter f = new DateTimeFormatterBuilder( )
.appendPattern( basePattern )
.appendFraction( ChronoField.NANO_OF_SECOND , 0 , 9 , true )
.appendPattern( " " )
.appendZoneText( TextStyle.SHORT )
.toFormatter( );
ZonedDateTime zdt = ZonedDateTime.parse( input , f );
System.out.println( "input: " + input );
System.out.println( "zdt.toString(): " + zdt );
: 30 2013 . 19:00: 00.001930000
zdt.toString(): 2013-11-30T19: 00: 00.001930-06: 00 [/]
Set
ZoneId
, , , CST
China Standard Time
. Set
ZoneId
. , .
Set < ZoneId > zones = new HashSet <>( );
zones.add( ZoneId.of( "Asia/Shanghai" ) ) ;
String input = "Nov 30, 2013 19:00:00.001930000 CST";
String basePattern = "MMM dd, yyyy HH:mm:ss";
DateTimeFormatter f = new DateTimeFormatterBuilder( )
.appendPattern( basePattern )
.appendFraction( ChronoField.NANO_OF_SECOND , 0 , 9 , true )
.appendPattern( " " )
.appendZoneText( TextStyle.SHORT , zones )
.toFormatter( );
ZonedDateTime zdt = ZonedDateTime.parse( input , f );
System.out.println( "input: " + input );
System.out.println( "zdt.toString(): " + zdt );
: 30 2013 . 19:00: 00.001930000
zdt.toString(): 2013-11-30T19: 00: 00.001930 + 08: 00 [/]
, , , . , , . , , , .
.appendZoneText( TextStyle.FULL )
:
String input = "Nov 30, 2013 19:00:00.001930000 Eastern Standard Time";
String basePattern = "MMM dd, yyyy HH:mm:ss";
DateTimeFormatter f = new DateTimeFormatterBuilder( )
.appendPattern( basePattern )
.appendFraction( ChronoField.NANO_OF_SECOND , 0 , 9 , true )
.appendPattern( " " )
.appendZoneText( TextStyle.FULL )
.toFormatter( );
ZonedDateTime zdt = ZonedDateTime.parse( input , f );
System.out.println( "input: " + input );
System.out.println( "zdt.toString(): " + zdt );
: 30 2013 . 19:00: 00.001930000
zdt.toString(): 2013-11-30T19: 00: 00.001930-05: 00 [America/New_York]
, Set
ZoneId
. Set
ZonedDateTime
. , America/New_York
. , " ", , America/Nassau
..
, , . SortedSet
, Set. , ZoneId
Comparable
, SortedSet
, TreeSet
.
Set < ZoneId > zones = new HashSet <>( );
zones.add( ZoneId.of( "America/Detroit" ) );
zones.add( ZoneId.of( "America/New_York" ) );
zones.add( ZoneId.of( "America/Nassau" ) );
zones.add( ZoneId.of( "America/Cancun" ) );
String input = "Nov 30, 2013 19:00:00.001930000 Eastern Standard Time";
String basePattern = "MMM dd, yyyy HH:mm:ss";
DateTimeFormatter f = new DateTimeFormatterBuilder( )
.appendPattern( basePattern )
.appendFraction( ChronoField.NANO_OF_SECOND , 0 , 9 , true )
.appendPattern( " " )
.appendZoneText( TextStyle.FULL , zones )
.toFormatter( );
ZonedDateTime zdt = ZonedDateTime.parse( input , f );
System.out.println( "input: " + input );
System.out.println( "zdt.toString(): " + zdt );
: 30 2013 . 19:00: 00.001930000
zdt.toString(): 2013-11-30T19: 00: 00.001930-06: 00 [/]